2016年10月31日 星期一

CAN Bus 環境經驗談

將硬體架好(目前使用的是帶有CAN Bus IC + CAN module),
硬體部分, CAN Module 從 IC 版上輸出 VDD, VSS, RX, TX, (Rx, Tx 不用像UART, Tx接Tx, Rx 接Rx, 另一邊的CANH, CANL也一樣, 但是CANH, CANL,要跨一個120歐姆的電阻

示波器, 顯示如下, 這是錯誤的波形,有可能是1.沒接對 2. bit rate 兩者不同,有可能A device是125Kmz, B device 是 250Khz





下面是對的波形, 250Khz, 這是對的波形







2016年3月9日 星期三

ESP8266 燒錄方法

上網找update ESP8266 tool 有找到,

但要說的不是軟體,重點是在硬體方面

ESP8266                    source
VCC        =>              3.3V
GND        =>             GND
RX            =>              TX
TX             =>              RX
CH_PD      =>           3.3V
RST          =>            x(不接)
GPIO0      =>             GND
GPIO2      =>            x(不接)

這樣再加上update tool就可以燒了







ESP8266用UART控制

先用UART轉USB的方法來測試一些功能是否正常


只寫我遇到的情況,其他上網找有一大堆說明

硬體方面遇到問題:
1.之前用UART轉USB的3.3V去做電源供應,發現電流不足,所以改用Power Supply供給3.3V
2.板子上的CH_PD腳要接到VCC(3.3V)





軟體遇到的問題:
板子上的軟體沒有更新,新版的是(AT+GMR 0018000902 OK),而我沒更新用115200 baudrate
1.我用的Terminal是RealTerm(Realterm_2.0.0.70),網路找也一大堆
選擇這個使用上會有亂碼的現象,下面是我選的選項,不會出現亂碼,選擇ansi






























2.AT Command,一行一行下command
1.剛裝好要先下AT ,是因為看有沒有回OK,如果有回OK,表示可以通
2.先掃一下wifi,                  AT+CWLAP
3.掃到後,                            AT+CWJAP="power","1122334455"
4.連上thingspeak.com,       AT+CIPSTART="TCP","183.106.153.149",80
5.告知要上傳的長度         AT+CIPSEND=52
6.要丟的資料                    GET /update?key=CKS7J99MM62TTJAC&field1=5&field2=9
這樣就可以在網上看到資料


下面是我遇到的問題
第四項問題:   183.106.153.149 就是thingspeak.com的IP address自固定的,80是port,也是固定
第五項問題:    連上後AT+CIPSEND=52  <<==52 因為長度不對,導致網站回應錯誤
第六項問題:   1.有很多網站會出現 (>) <==之前就是搞不懂,是自己要下command還是怎樣,結果                            是第五項下了之後就會產生(>)
                        2.CKS7J99MM62TTFJAC   <<==這種東西是thingspeak.com給的現在是我亂寫的                            不能照抄,在API keys(網頁),上網找,會有,要換上自己的

                         可以下2種方式上傳:
                          1.
                         AT+CIPSEND=52
                         GET /update?key=CKS7J99MM62TTJAC&field1=5&field2=9
                          2.
          AT+CIPSEND=78
          https://api.thingspeak.com/update?api_key=CKS7J99MM62TTJAC&field1=1&field2=5

                          請注意一下長度,如果還是看不到資料,可以在空白網頁上輸入
 https://api.thingspeak.com/update?api_key=CKS7J99MM62TTJAC&field1=1&field2=5

再到自己的thingspeak.com網頁裡看有沒有資料,有的話,表示thingspeak.com網站是可以填寫資料的


這是我下command索回傳的字串
















2016年1月20日 星期三

FreeRTOS xSemaphoreCreateMutex用法

親身體驗的結果,
測試環境:

Compiler: windows8.1 + CCS v6.1x
Software:撿到的FreeRTOS,應該是8.2.3版的
Hardware:EK-TM4C123GXL

測試功能是要使用2組UART(UART0,UART1),做printf,如果沒有用xSemaphoreCreateMutex,輕的會print不出來,重的會直接當機給你看,測試幾次,有2次是重新開機

xSemaphoreHandle g_pUARTSemaphore;
xSemaphoreHandle g_pUART1Semaphore;
int main(void)
{
     ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|        SYSCTL_OSC_MAIN); //80 MHZ
ConfigureUART();
UARTprintf("\n UARTprintf \nWelcome to the EK-TM4C123GXL FreeRTOS Demo!\n");

UART1_Init();
UART1printf("\nUART1printf \n Welcome to the EK-TM4C123GXL FreeRTOS Demo!\n");
        g_pUARTSemaphore = xSemaphoreCreateMutex();
        g_pUART1Semaphore = xSemaphoreCreateMutex();

       while(1);
}

下面是我的範例,如果拿掉xSemaphoreTake, xSemaphoreGive,只留下2行的UARTprintf,會很慘

extern xSemaphoreHandle g_pUARTSemaphore;
extern xSemaphoreHandle g_pUART1Semaphore;

static portTASK_FUNCTION(vTest2Task, pvParameters)
{
for( ;; )
{
                xSemaphoreTake(g_pUARTSemaphore, portMAX_DELAY);
UARTprintf("U0vTest2Task.......\r\n");
                xSemaphoreGive(g_pUARTSemaphore);

                xSemaphoreTake(g_pUART1Semaphore, portMAX_DELAY);
UART1printf("U1vTest2Task.......\r\n");
                xSemaphoreGive(g_pUART1Semaphore);

vTaskDelay( 1000/portTICK_RATE_MS );
}
}

//=======================================================
輕點當機,會進到系統裡的地方是,下面的地方
//*****************************************************************************
//
// This is the code that gets called when the processor receives a fault
// interrupt.  This simply enters an infinite loop, preserving the system state
// for examination by a debugger.
//
//*****************************************************************************
static void
FaultISR(void)
{
    //
    // Enter an infinite loop.
    //
    while(1)
    {
    }
}







2015年5月12日 星期二

Filezilla Client windows8.1跟ubuntu 10.04安裝

server 是linux系統的,有用基本的putty的telnet連上過,沒問題

先講簡單的windows8.1

安裝完 Filezilla Client 3.10.3 , 打開後,開啟站台管理員,新增站台=>在一般設定=>
主機:192.168.xx.xx
連接埠:22
協定:SFTP-SSH File Transfer Protocol
登入型式:一般
使用者:xxx(在server的帳號)
密碼:xxx(在server的密碼)


再按連線,就可以看到successful


======================================================================
再說linux ubuntu10.04版的
先在terminal下
sudo apt-get install filezilla
安裝完後到
/usr/bin/
看看有沒有
filezilla
直接去執行filezilla,左鍵滑鼠敲2下,就可以打開filezilla
再往下做就跟windows的操作一樣







2015年5月11日 星期一

ubuntu 10.04 安裝圖形化介面

1.先在VM=>Install VMware Tools
首先發現會出現的問題, "VMware Tools installation cannot be started manually while Easy Install is in progress."

1.先確認一下,是否有選到的選項




如果還不行,就請用終極作法

1.將Floppy先移除掉,再重新add,一樣是選Auto detect,按ok
2.再將CD/DVD移除掉,再重新add,選Auto detect,在按ok






完畢後,再開機(power on),開機時會出現找不到Floppy,但不管它,開機後再選一次,VM=>Install VMware Tools,這樣就可以正常了,會出現cancel VMware Tools installation

=======================================================================
有安裝過ubuntu-14.10-desktop-amd64,跟安裝最新的ubuntu-15.04-desktop-i386,安裝老半天都沒法create share file,上面的就是我遇到其中的某一個問題,所以只好回到10.04,之前有使用過10.04版,但是燒到光碟版的安裝都沒什麼問題,我是
直接下載ubuntu 10.04,ubuntu-10.04.4-server-i386.iso,沒燒成CD,安裝完,啟動後,就變文字模式,如果要進入圖形化介面,在terminal,先安裝sudo apt-get install xinit,再打startx,哇~發現是變成白底黑字,在網上找到一些資料,做了一些動作都沒用,例如做一些update,
但是安裝完下面指令後就可以進入圖形化介面,但是安裝時間要很久,我下載時間約2小時多
sudo apt-get install ubuntu-desktop #gnome

如果再不行,可以試著換這個

sudo apt-get install Kubuntu-desktop #kde

我2個都有安裝,先安裝sudo apt-get install ubuntu-desktop #gnome,再安裝sudo apt-get install Kubuntu-desktop #kde,發現會讓你選擇是要執行gnome或kde,我選擇gnome,看起來是沒問題的






















2014年11月3日 星期一

MT7620 新增madplayer方法


要先下載madplayer的資料

madplay-0.15.2b.tar.gz
libmad-0.15.1b.tar.gz
libid3tag-0.15.1b.tar.gz

網址:
http://sourceforge.net/projects/mad/files/

zlib-1.2.8.tar.gz
網址:
http://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz/download

http://sourceforge.net/projects/libpng/files/zlib/

我是用mips的,所以我找了一些mip相關網站,參考,修改成我要的東西
1.
 先指定路徑:
TOOLCHAINPATH=/opt/buildroot-gcc342/bin/

2.安裝zlib
tar zxf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure --prefix=$TOOLCHAINPATH

make CC=mipsel-linux-gcc 2>&1 | tee build.log

make install

3.安裝libid3tag

tar zxf libid3tag-0.15.1b.tar.gz

cd libid3tag-0.15.1b

RANLIB=mipsel-linux-ranlib AR=mipsel-linux-ar CC=mipsel-linux-gcc ./configure --prefix=$TOOLCHAINPATH --enable-static --disable-shared --host=mipsel-linux

make 2>&1 | tee build.log

make install

4.安裝libmad
tar zxf libmad-0.15.1b.tar.gz

cd libmad-0.15.1b

RANLIB=mipsel-linux-ranlib AR=mipsel-linux-ar CC=mipsel-linux-gcc ./configure --prefix=$TOOLCHAINPATH --enable-static --disable-shared --host=mipsel-linux

make 2>&1 | tee build.log

make install

5.安裝madplay

tar zxf madplay-0.15.2b.tar.gz

cd madplay-0.15.2b

LIBS="-lm -lz" RANLIB=mipsel-linux-ranlib AR=mipsel-linux-ar CC=mipsel-linux-gcc ./configure --prefix=$TOOLCHAINPATH --enable-static --disable-shared --host=mipsel-linux

make 2>&1 | tee build.log


基本上這樣是沒錯的,但是我安裝到最後會出現問題,不知道為什麼,請待續...

下面是我compiler過的

方法一:
安裝zlib
tar zxf zlib-1.2.8.tar.gz
cd zlib-1.2.8
CC=mipsel-linux-gcc AR="mipsel-linux-ar rc" RANLIB=mipsel-linux-ranlib ./configure --prefix=/opt/buildroot-gcc342/bin/mipsel-linux

export CPPFLAGS='-I../libmad -I../libid3tag'
export LDFLAGS='-L../libmad -L../libid3tag'

安裝libid3tag
./configure --host=mipsel-linux
make
cp .libs/libid3tag.a .

安裝libmad
./configure --host=mipsel-linux
make
cp .libs/libmad.a .

安裝madplay
./configure --host=mipsel-linux
make

我compiler後,會出現這樣的問題
../libtool: line 1644: cd: ../libmad: No such file or directory
libtool: link: cannot determine absolute directory name of `../libmad'
make[2]: *** [libintl.la] Error 1

解決方法:直接指到絕對路徑
修改Makefile
#vi Makefile
CPPFLAGS='-I/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libmad/ -I/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libid3tag/'
LDFLAGS='-L/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libmad/ -L/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libid3tag/'

最後再下:
#./configure --host=mipsel-linux --disable-debugging --disable-shared --enable-static CPPFLAGS='-I/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libmad/ -I/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libid3tag/' LDFLAGS='-L/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libmad/  -L/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libid3tag/.libs'
就過了
之後換make
#make
又會出現error
mipsel-linux-gcc: /root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libid3tag/.libs/.libs/libid3tag.so: No such file or directory
make[2]: *** [madplay] Error 1

再次修改Makefile
vi Makefile
找到下面那行
LDFLAGS='-L/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libmad/ -L/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libid3tag/.libs'
變成
LDFLAGS='-L/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libmad/ -L/root/Workspace/SDK4120_Original_DRAM_128MB/source/user/madplay/libid3tag/
之後再make一次
#make
就過了

# file madplay

madplay: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV), dynamically linked (uses shared libs), not stripped

就會看到是用MIPS