日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

君正4750開發(fā)板使用日記6-uCOS(minios)的開發(fā)配

系統(tǒng) 2824 0

大半年沒(méi)有搞君正的開發(fā)板了,最近總算有機(jī)會(huì)再試試JZ4750的uc/osII配置。也在此做個(gè)記錄,供參閱。

君正4750開發(fā)板使用日記6-uCOS(minios)的開發(fā)配置試驗(yàn)

ucos要在linux環(huán)境下編譯,我仍是在windows下用VMWare UbuntuServer910虛擬機(jī),用Putty連接登錄后執(zhí)行命令。我一開始并沒(méi)有拿到了JZ4750的ucos的SDK(隨機(jī)光盤上只有一個(gè)可燒錄的DEMO),于是從君正官網(wǎng)的FTP里下載了Jz-uCOS-Development-guide.pdf、mipsel-4.1.2-nopic.tar.bz2、ucosii.tar等文件,然后將所有JZ的安裝文件打包成ISO掛在虛擬機(jī)光驅(qū)上,按照J(rèn)z-uCOS-Development-guide.pdf里的說(shuō)明,進(jìn)行解壓安裝。

首先是掛載光盤,安裝編譯器工具鏈:

root@ubuntu :~# mkdir -p /opt
root@ubuntu :~# cd /opt

根據(jù)過(guò)去的經(jīng)驗(yàn),GCC等基本編譯包是必須要裝的:
root@ubuntu:/opt # apt-get install build-essential
...
root@ubuntu:/opt # mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
root@ubuntu:/opt # ls /mnt
ucosii.tar mipsel-4.1.2-nopic.tar.bz2
root@ubuntu:/opt # tar -xjf /mnt/mipsel-4.1.2-nopic.tar.bz2
root@ubuntu:/opt # ls
mipsel-4.1.2-nopic
root@ubuntu:/opt # mv mipsel-4.1.2-nopic mipsel-nopic
root@ubuntu:/opt # ls
mipsel-nopic
root@ubuntu:/opt #

然后是設(shè)置環(huán)境變量,寫個(gè)hello.c程序來(lái)驗(yàn)證編譯工具是否安裝成功:

root@ubuntu:/opt # export GCC_EXEC_PREFIX=/opt/mipsel-nopic/lib/gcc/mipsel-linux/4.1.2/
root@ubuntu:/opt # export PATH=/opt/mipsel-nopic/bin:$PATH
root@ubuntu:/opt # vi hello.c

按I進(jìn)入插入模式,輸入以下內(nèi)容,按ESC,輸入wq保存退出:
#include <stdio.h>
int main()
{
printf("hello jz-mipsel-linux ucosii/r/n");
return 0;
}
root@ubuntu:/opt # mipsel-linux-gcc -o hello hello.c
mipsel-linux-gcc: error trying to exec 'cc1': execvp: No such file or directory

root@ubuntu:/opt #

非常郁悶,居然連最簡(jiǎn)單的HELLO都編譯失敗。網(wǎng)上查一下,說(shuō)可能是gcc沒(méi)裝好或路徑不對(duì),于是又下載重裝更新,瞎折騰了一把,最后發(fā)現(xiàn)出錯(cuò)是因?yàn)楸晃臋n誤導(dǎo)了,有GCC_EXEC_PREFIX的環(huán)境變量定義反而不行,將其刪除即可:
root@ubuntu:/opt # export -n GCC_EXEC_PREFIX
root@ubuntu:/opt # mipsel-linux-gcc -o hello hello.c
...
/opt/mipsel-nopic/bin/../lib/gcc/mipsel-linux/4.1.2/../../../../mipsel-linux/bin/ld: /opt/mipsel-nopic/bin/../lib/gcc/mipsel-linux/4.1.2/crtend.o: warning: linking PIC files with non-PIC files
/opt/mipsel-nopic/bin/../lib/gcc/mipsel-linux/4.1.2/../../../../mipsel-linux/bin/ld: /opt/mipsel-nopic/bin/../lib/gcc/mipsel-linux/4.1.2/../../../../mipsel-linux/lib/crtn.o: warning: linking PIC files with non-PIC files

root@ubuntu:/opt #

編譯工具鏈裝好了,接著解開ucosii的源碼:

root@ubuntu:/opt # tar -xf /mnt/ucosii.tar
root@ubuntu:/opt # ls
hello hello.c mipsel-nopic ucosii
root@ubuntu:/opt # cd ucosii
root@ubuntu:/opt/ucosii # ls
audio cvs-up-dir.sh jz4740 lwip mips sample ucfs
CVS jz4730 LIBS madplay mmc src ucgui
root@ubuntu:/opt/ucosii #

按文檔說(shuō)明,我應(yīng)該要進(jìn)JZ4750目錄編譯,但顯然此安裝包里沒(méi)有這個(gè)配置。不管那么多,先到JZ4740子目錄編譯一下:
root@ubuntu:/opt/ucosii # cd jz4740/
root@ubuntu:/opt/ucosii/jz4740 # make
mipsel-linux-gcc -mips32 -O2 -mno-abicalls -fno-pic -fno-builtin -fno-exceptions -ffunction-sections -finit-priority -fomit-frame-pointer -msoft-float -G 0 -DJZ4740_PAV=1 -DCAMERA=0 -DUCGUI=1 -DUCFS=1 -DMMC=1 -DJPEG=1 -DTOUCH=2 -DJZ4740_PAV=1 -DDM=0 -I../src -I../jz4740/include -I../mips -I../jz4740 -I../jz4740/nand -DNAND=1 -DKEYTYPE=1 -I../jz4740/drv/key -DCODECTYPE=1 -I../jz4740/drv/codec -DRTCTYPE=1 -I../jz4740/drv/rtc -DLCDTYPE=1 -I../jz4740/drv/lcd -DTOUCH=2 -I../jz4740/drv/touch -I../mmc -I../ucfs -I../ucgui/Font -I../ucgui/LCDDriver -I../ucgui/Config -I../ucgui/Core -I../ucgui/ConvertColor -I../ucgui/WM -I../ucgui/Widget -I../ucgui/MemDev -I../ucgui/JPEG -DUDC=1 -DNAND_UDC_DISK=1 -DRAM_UDC_DISK=0 -I../jz4740/udc_new/udc_bus -I../jz4740/udc_new/udc_dma -I../jz4740/udc_new/mass_storage -I../jz4740/udc_new/block/ramdisk -I../jz4740/udc_new/block/nanddisk -I../madplay/libmad-0.15.1b -I../madplay/libid3tag-0.15.1b -D_ASSEMBLER_ -D__ASSEMBLY__ -o head.o -c head.S
cc1: error: unrecognized command line option "-finit-priority"
make: *** [head.o] Error 1
root@ubuntu:/opt/ucosii/jz4740 #

這下搞不掂了,重新下載了另一個(gè)編譯工具鏈mipsel-linux-gcc412-glibc236-nopic-sf-20101020.tar.bz2一樣不行,改makefile把此選項(xiàng)去掉,又有別的錯(cuò)誤。折騰了半天,還是不行,最后放棄了這個(gè)網(wǎng)上的版本。

然后打電話給君正的技術(shù)支持重新要一個(gè)ucos的SDK。JZ的人員素質(zhì)很高,很快就答應(yīng)了,一會(huì)就傳了個(gè)minios SDK過(guò)來(lái)。SDK附帶一個(gè)minios sdk使用說(shuō)明.pdf,看了此文檔后,才知道原來(lái)ucos的開發(fā)是需要先做資源,包括def、img、str、font和開機(jī)畫面等,生成res.bin和ResID.h,以及def_boot.bin、img_boot.bin,然后把ResID.h復(fù)制到源碼目錄加入編譯。燒錄時(shí)可以多個(gè)bin一起燒進(jìn)去。

這次我拿到的是一個(gè)多媒體播放的SDK配置,其主目錄為mtv_50,首先仍是解壓安裝:
root@ubuntu:/opt # tar -xf /mnt/minios.tar
root@ubuntu:/opt # ls
hello hello.c minios mipsel-4.1.2-nopic ucosII ucosii-old
root@ubuntu:/opt # cd minios/
root@ubuntu:/opt/minios # ls
dcdv inc jzfs midware miniclib mtv_50 sample soc_src src

按照文檔說(shuō)明,把mxu_as文件復(fù)制到編譯工具目錄:
root@ubuntu:/opt/minios # cd mtv_50/tools
root@ubuntu:/opt/minios/mtv_50/tools # ls
big5_tools crc32.c gb18030_tools ksc_tools Makefile mxu_as
root@ubuntu:/opt/minios/mtv_50/tools # cp mxu_as /opt/mipsel-nopic/bin/

然后編譯nandboot:

root@ubuntu:/opt/minios/mtv_50/tools # cd ..
root@ubuntu:/opt/minios/mtv_50 # cd ../soc_src/jz4755/nandboot/
root@ubuntu:/opt/minios/soc_src/jz4755/nandboot # make clean
rm -fr *.o nand.elf clock.o debug.o nandboot.o nandlib.o core *.sym *.map *.dump nand.bin *.lib
root@ubuntu:/opt/minios/soc_src/jz4755/nandboot # make
mipsel-linux-gcc -mips32 -O2 -mno-abicalls -fno-pic -fno-builtin -fno-exceptions -ffunction-sections -Wall -Werror -fomit-frame-pointer -msoft-float -G 0 -DSOC_GENERATION=4755 -DUARTQUERY=2 -DHAVE_DCDV=0 -DPLATFORM_CETUS -DPLATFORM_CETUS_4750L -DIMAGE_DECODE_MEM_LEN="(4*1024*1024)" -DAUDIO_DECODE_MEM_LEN="(5*1024*1024)" -DAUDIOTAG_MEM_SIZE="(5*1024*1024)" -DLCD16BPP=0 -DLCD32BPP=1 -DSCREEN_W=480 -DSCREEN_H=272 -DVIDEOMAXMEM=0x81fffc00 -DLCD_TYPE_BPP_32 -DNOT_SUPPORT_TVOUT -DTVOUTTYPE=0 -I../../../soc_src/jz4755/include -I../../../src -I../../../soc_src/jz4755/nandboot -D_ASSEMBLER_ -D__ASSEMBLY__ -o start.o -c start.S
...
mipsel-linux-gcc -nostdlib -T u-boot-nand.lds -o nand.elf start.o clock.o debug.o nandboot.o nandlib.o -lstdc++ -lc -lm -lgcc
mipsel-linux-objcopy -O binary nand.elf nand.bin
mipsel-linux-objdump -d nand.elf > nand.dump
mipsel-linux-nm nand.elf | sort > nand.sym
mipsel-linux-objdump -h nand.elf > nand.map
root@ubuntu:/opt/minios/soc_src/jz4755/nandboot #

一次成功,難得。接著清理并編譯主BIN:
root@ubuntu:/opt/minios/soc_src/jz4755/nandboot # cd /opt/minios/mtv_50/
root@ubuntu:/opt/minios/mtv_50 # make cleanall
#cd ;make clean;#cd ../mtv_50;
make[1]: Entering directory `/opt/minios/mtv_50/desktop'
make[2]: Entering directory `/opt/minios/mtv_50/desktop/simpleness'
rm -fr ../../../mtv_50/desktop/simpleness/rel
...
rm -f *~ *.o ../../../soc_src/LIBS/mass_lib.a depend
make[1]: Leaving directory `/opt/minios/soc_src/common/mass_lib'
root@ubuntu:/opt/minios/mtv_50 #
root@ubuntu:/opt/minios/mtv_50 # make build
...
../../mtv_50/genlds ../../mtv_50/video/rel/video.elf.obj ../../mtv_50/target/mobile_tv.lds > mobile_tv.lds
../../mtv_50/genlds: 4: gawk: not found
make[1]: *** [../../mtv_50/video/rel/video.elf] Error 127
make[1]: Leaving directory `/opt/minios/mtv_50/video'
make: *** [../mtv_50/video] Error 2
root@ubuntu:/opt/minios/mtv_50 #

不出所料又杯具了。不過(guò)還好,是缺了gawk這個(gè)包,將它裝上就是了:

root@ubuntu:/opt/minios/mtv_50 # apt-get install gawk
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
gawk
0 upgraded, 1 newly installed, 0 to remove and 43 not upgraded.
Need to get 525kB of archives.
After this operation, 2,122kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com karmic/main gawk 1:3.1.6.dfsg-0ubuntu2 [525kB]
Fetched 525kB in 4s (114kB/s)
Selecting previously deselected package gawk.
(Reading database ... 40315 files and directories currently installed.)
Unpacking gawk (from .../gawk_1%3a3.1.6.dfsg-0ubuntu2_i386.deb) ...
Processing triggers for install-info ...
Processing triggers for man-db ...
Setting up gawk (1:3.1.6.dfsg-0ubuntu2) ...

root@ubuntu:/opt/minios/mtv_50 #

這次終于編譯通過(guò)了:

root@ubuntu:/opt/minios/mtv_50 # make build
...
head:----------------------------------
name = desktoplib_drawer.bin
nand = 6954
start = 0x80451000
size = 12160
---------------------------------------
head:----------------------------------
name = desktoplib_tradition.bin
nand = 6960
start = 0x80451000
size = 8728
---------------------------------------
Total File Count 62 Link File Count 62!
make: [app] Error 1 (ignored)
make: [app] Error 1 (ignored)
cp -f HostLink/minios.bin ../../
root@ubuntu:/opt/minios/mtv_50 #

其輸出文件minios.bin在/opt下:

root@ubuntu:/opt/minios/mtv_50 # cd ../../
root@ubuntu:/opt # ls -l
total 14504
-rwxr-xr-x 1 root root 572102 2010-12-07 02:44 hello
-rw-r--r-- 1 root root 105 2010-12-07 02:44 hello.c
drwxrwxrwx 11 root root 4096 2010-04-14 03:15 minios
-rw-r--r-- 1 root root 14264320 2010-12-07 05:00 minios.bin
drwxr-xr-x 10 508 500 4096 2008-03-25 00:52 mipsel-nopic
root@ubuntu:/opt #

文檔上還需要編譯minios/loader,但我沒(méi)有這個(gè)目錄。搜一下,最后發(fā)現(xiàn)在minios/mtv_50/loader目錄下,于是編譯之:

root@ubuntu:/opt/minios/mtv_50 # cd loader
root@ubuntu:/opt/minios/mtv_50/loader # make clean
rm -fr ../../mtv_50/loader/target
root@ubuntu:/opt/minios/mtv_50/loader # make
Compile: ../../soc_src/common/kernel_lib/head.S
Compile: ../../miniclib/libc_s.S
Compile: ../../soc_src/jz4755/kernel/clock.c
...
144 0 0 144 90 os_dbg.o (ex ../../src/minios.a)
2216 0 20496 22712 58b8 os_cpu_a.o (ex ../../src/minios.a)
148272 1632 49600 199504 30b50 (TOTALS)
text data bss dec hex filename
150896 1688 82532 235116 3966c ../../mtv_50/loader/target/loader.elf
150896 1688 82532 235116 3966c (TOTALS)
root@ubuntu:/opt/minios/mtv_50/loader #

接下來(lái)就是將所有BIN文件拷到燒錄目錄下,執(zhí)行燒錄了。

至此基本上把JZ4750的主要幾種系統(tǒng)的開發(fā)模式都淺嘗試驗(yàn)過(guò)了,都沒(méi)有做深入的軟硬件配置和應(yīng)用開發(fā),但感覺(jué)還是比較復(fù)雜。君正在UCOS上的資料還是太少,網(wǎng)上的源碼包和文檔都太久不更新過(guò)于陳舊,離開了技術(shù)支持絕對(duì)是不行的,對(duì)原廠商依賴性太強(qiáng),需要提供較多的服務(wù)支持,這對(duì)其方案應(yīng)用的發(fā)展來(lái)說(shuō)顯然是有限制的。

順便解釋一下這里所謂的minios與uC/OS的關(guān)系,其實(shí)minios一般就是硬件方案廠商在uC/OS的基礎(chǔ)上作了移植開發(fā)增強(qiáng)功能的結(jié)果。移植的意思是從一種硬件架構(gòu)移到另一種,因?yàn)椴煌挠布桨钢蠧PU指令、寄存器、時(shí)鐘中斷、數(shù)據(jù)類型等都不同,所以需要移植修改。比如凌陽(yáng)的開發(fā)板會(huì)附帶一個(gè)凌陽(yáng)從uC/OS移植過(guò)來(lái)的minios;我拿到的這個(gè)minios,其實(shí)是君正在uC/OS II的基礎(chǔ)上移植開發(fā)的。

君正4750開發(fā)板使用日記6-uCOS(minios)的開發(fā)配置試驗(yàn)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 鞍山市| 澄江县| 泰和县| 夹江县| 运城市| 富裕县| 万年县| 北流市| 略阳县| 廉江市| 日土县| 泰顺县| 永吉县| 曲麻莱县| 华池县| 眉山市| 卓尼县| 陆河县| 张北县| 瑞丽市| 康定县| 彩票| 灌阳县| 长春市| 驻马店市| 盱眙县| 渑池县| 贺兰县| 革吉县| 陆河县| 陆丰市| 义乌市| 珲春市| 柳州市| 申扎县| 若尔盖县| 成武县| 西盟| 雷山县| 西林县| 鞍山市|