對硬碟的操作
使用sata硬碟,分區,引導區(vxc:)必須格式化為fat(fat16)格式,是以該分區大小有限制,不能超過4g(4g大小帶測試),設定c:為“活動的”;
主機上安裝dos工具,采用maxdos8.5 版本,進入dos環境下,格式化硬碟的引導區(sata硬碟的分區vxc: format c: /s/q),進入windows,将準備好的dos系統檔案拷貝至vx的引導分區(vxc:)
添加網卡
更新網卡驅動,按照bsp中的說明更新網卡檔案并make。
install_dir\windriver\vxworks-6.6\target\src\hwif\end\make cpu=pentium4 tool=diab
建立工程
建立boot loader/bsp project 工程,如下圖1。 format 選項必須是 bin。config.h檔案可以不用修改。
編譯工程,将生成的bootrom.bin 改名為 bootrom.sys,拷貝到 vxc:盤下。
建立 image 工程,編譯,生成vxworks 檔案。拷貝到 vxc:盤下。
将sata盤連接配接目标機,啟動。加載bootrom 成功,開始初始化硬體,提示硬碟錯誤,可能和硬碟個數有關。随後加載vxworks 映像成功,進入vxworks作業系統。敲擊鍵盤,有反應。
圖1建立boot loader/bsp project 工程
修改 config.h 檔案中 硬碟的個數設定。編譯bootrom
#defineata0_num_drives (1) /*ata 0 number drives present */
#defineata1_num_drives (0) /* ata 1 number drives present */
圖2
修改 image工程,如下,編譯成功。運作後顯示界面正常。
voidusrappinit (void)
{
#ifdef user_appl_init
user_appl_init; /* for backwards compatibility */
#endif
printf("hello\n");
/* add application specific code here */
}
添加下圖中的元件後,編譯錯誤。去掉該元件後,編譯正常。
圖3
添加 對磁盤操作的代碼,注意變量的聲明必須放在最前面(c語言的文法規定)。
編譯執行後,提示磁盤操作錯誤,磁盤上沒有建立檔案。
在核心中添加 dos檔案系統,如下圖4,5,6。
增加 file system and disk utilities 核心。編譯測試。
測試速度沒有提高。
增加 dos fs cache handler 元件,如下圖7。
dosfs_default_fat_cache_suze 0x10000
dosfs_default_data_cache_suze 0x20000
dosfs_default_dir_cache_suze 0x2000
添加 kernelcomponents(default) 元件,選擇全部,
添加hrfs 元件
系統元件:
networkcomponents/network protocols/newwork application/telnet server
hardware/peripherals/serial/pc console
developmenttool components/target shell components/target shell
devs檢視裝置
atashow
16:
->cp( "/sd0/file1.dat","/sd0/dir2/f001.dat")
17.lockd:;vxsys d:
ifconfig("rtg0172.29.38.93 netmask 255.255.255.0 up")
ifconfig("rtg0up")
/*updated by ampro */
/* boot form a network*/
#define include_boot_network
#define include_boot_ftp_loader
#undef include_boot_tftp_loader
#undef include_boot_rsh_loader
#define ata0_config (ata_geo_current | ata_dma_auto | \
ata_bits_32 | ata_pio_multi)
速度有提高,bit加寬,mod = dmault2
ld1,0,"d:/load/demo422.out" 加載out檔案
ld<demo422.out要先确定 ld的預設目錄用
ls 檢視目前目錄 list the contents of a directory(windsh)
pwd display the current default directory(windsh)
cd"d:/load" 改變目前目錄
添加usb識别。
另,在vxworks6.x的版本中存在一個bug,當用copy指令拷貝檔案到tffs或者u盤中,6.x版本上拷貝速度明顯遠遠慢于5.5。追蹤代碼發現copy使用的中間函數copystreams。這個函數的作用是從第一個檔案中讀出一個資料塊到緩沖區,然後寫入第二個檔案。vxworks5.5下,這個資料塊的大小是64k,對于1m的檔案隻需要調用16次檔案系統的寫函數;而vxworks6.x下,這個資料塊的大小是1k,拷貝1m的檔案需要調用1024次寫函數。每次調用寫函數都需要同步fat表和檔案描述。對于flash一般一個扇區在64kb或者128kb大小,将copystreams中的copy_block_size改為此大小可以明顯改善copy的速度。
copy_block_size的設定在c:\windriver-gppve-3.6-ia-eval\vxworks-6.6\target\src\usr\usrfslib.c檔案中(該檔案為隻讀,首先備份并去除隻讀屬性),修改此檔案中copy_block_size的大小為64kb或者128kb,然後打開vxworks development shell,進入該目錄,執行make cpu=pentium4 tool=diab指令。執行完畢後,重新編譯所有工程。
d525vxworks6.6 測試:
1. bois設定sata only
2. 采用3011的bsp
3. 網卡驅動采用6763 bsp下的,要重新編譯,把.o檔案放到bsp\lib裡面
4. d525 vxworks6.6 bsp測試
d525vxworks6.8 測試:
2. 采用6763的bsp
3. ata_num 1
4. 網卡驅動采用6763 bsp下的,要重新編譯
5. d525 vxworks6.8
6. 硬碟識别,檔案操作會出錯。
"gei(0,0) host:vxworks h=192.168.1.250 e=192.168.1.222:ffffff00 u=target pw=target o=gei"
"ata=0,0(0,0) host:/ata00:4/vxworks h=192.168.1.250 e=192.168.1.222:ffffff00 u=target pw=target o=gei"