<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團論壇  (http://www.hufushizhe.com/bbs/index.asp)
    --  VxWorks技術(shù)討論區(qū)  (http://www.hufushizhe.com/bbs/list.asp?boardid=11)
    ----  基于ARM7核處理器VxWorks系統(tǒng)BSP設(shè)計  (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=11&id=1403)

    --  作者:wangxinxin
    --  發(fā)布時間:2010-11-17 9:14:06
    --  基于ARM7核處理器VxWorks系統(tǒng)BSP設(shè)計
    摘要:該文主要介紹了SAMSUNG公司的基于ARM7TDMI核S3C4510B微處理器,并詳細(xì)介紹了利用該處理器所設(shè)計嵌入式系統(tǒng)以及VxWorks操作系統(tǒng)下BSP(Board Supported Package)的開發(fā)

        關(guān)鍵詞:ARM7TDMI S3C4510B VxWorks BSP  

    1 介紹  

    S3C4510B是三星公司推出的針對嵌入式應(yīng)用的16/32 位嵌入式處理器,該微控制器專為以太網(wǎng)通信系統(tǒng)的集線器和路由器而設(shè)計,具有低成本和高性能的特點, S3C4510B中內(nèi)置了

    ARM公司

    設(shè)計的16/32位ARM7TDMI處理器, 可以執(zhí)行32位的ARM指令,也可執(zhí)行16位的THUMB指令, 并集成了多種外圍部件,主要有:  

    ● 時鐘頻率50MHz  

    內(nèi)核/IO電壓3.3V  

    ● 8KB的Cache/SRAM  

    ● 一個10/100Mbps 以太網(wǎng)控制器,MII接口  

    ● 兩個HDLC通道,每個通道可支持10Mbps  

    ● 兩個UART通道  

    ● 兩個DMA通道  

    ● 兩個32位定時/計數(shù)器  

    ● 18個可編程I/O口  

    ● 中斷控制器,支持21個中斷源,包括4個外部中斷  

    ● 支持SDRAM,EDO DRAM,SRAM,F(xiàn)lash等  

    ● 具有擴展外部總線  

    ● JTAG接口,支持軟件開發(fā) ,硬件調(diào)試  

    S3C4510B支持目前常用的嵌入式操作系統(tǒng),如VxWorks、pSoS、ucLinux等,本文將主要介紹VxWorks操作系統(tǒng)下的軟件開發(fā)。  

    ARM7TDMI是ARM家族通用的一款32位微處理器,它主要為用戶提供了高性能、低價格解決方案。  

    ARM7TDMI具有三級流水線的32位RISC處理器,處理器結(jié)構(gòu)為馮·諾依曼Load/Store。該CPU具有兩種指令集,即ARM和Thumb指令集。ARM指令集是32位,它可以利用CPU最大性能;而Thumb指令集則是16位指令集。  

    ARM7TDMI內(nèi)核方塊圖如圖1所示。



    圖片點擊可在新窗口打開查看





    2 系統(tǒng)硬件圖  

    該系統(tǒng)主要以S3C4510B為核心,外圍集成了以太網(wǎng)卡、SDRAM、FLASH、UART以及HDLC等。圖2是以S3C4510B為核心的最小系統(tǒng)設(shè)計圖。



    圖片點擊可在新窗口打開查看



        SDRAM選用HY57V653220(8Mbyte)、兩片F(xiàn)LASH分別為AM29F040(存放bootrom)和T28F160BT(作為文件系統(tǒng)用)。  

    3 VxWorks操作系統(tǒng)下BSP構(gòu)建  

    在完成板上基本硬件的測試后,下面我就開始對vxWorks操作系統(tǒng)下BSP進(jìn)行開發(fā),開發(fā)前需要做一些準(zhǔn)備工作,如準(zhǔn)備開發(fā)工具等。  

    ① 開發(fā)工具用的是Tornado2.2 for ARM;  

    ② 參考資料有BSP Kit、S3C4510B DataSheet;  

    ③ 參考Tornado2.2 for ARM下自帶的wrSBCArm7 BSP;  

    ④ 燒寫程序采用編程器。  

    通常在開發(fā)BSP的時候,我們需要在Tornado原帶BSP目錄下找一個與我們所用的處理器相同或相近。與BSP相關(guān)的文件有:romInit.s、sysAlib.s、bootInit.c、bootConfig.c、sysLib.c、config.h、configNet.h、makefile以及與我們硬件相關(guān)的,如串口sysSerial.c等。由于篇幅所限,具體的文件作用在此就不說了。下面主要根據(jù)S3C4510B來闡述一下BSP開發(fā)步驟。  

    (1)拷貝BSP  

    將wrSBCArm7 BSP拷貝一份并命名為4510BSP,接下來的工作就是修改該目錄下的文件,從而得到自己的BSP。  

    (2)修改MakeFile文件  

    修改4510BSP目錄下的makefile文件,修改如下幾行:  

    TARGET_DIR = 4510BSP # changed by caiyang  

    VENDOR = CAI # changed by caiyang  

    BOARD = MyArmBoard # changed by caiyang  

    ROM_TEXT_ADRS = 01000000 # ROM entry address  

    ROM_WARM_ADRS = 01000004 # ROM warm entry address  

    ROM_SIZE = 00080000 # number of bytes of ROM space  

    RAM_LOW_ADRS = 00006000 # RAM text/data address (bootrom)  

    RAM_HIGH_ADRS = 00486000 # RAM text/data address (bootrom)  

    MACH_EXTRA =  

    注解:ROM_TEXT_ADRS:BOOT ROM的入口地址。對大多數(shù)板來說,這就是ROM地址區(qū)的首地址,然而也有的硬件配置使用ROM起始的一部分地址區(qū)作為復(fù)位向量,因此需要根據(jù)此設(shè)置偏移量作為它的地址。這個偏移量因CPU結(jié)構(gòu)而定。  

    ROM_WARM_ADRS:BOOT ROM熱啟動入口地址。它通常位于固定的ROM_TEXT_ADRS+4的地方。當(dāng)需要熱啟動時,sysLib.c文件中sysToMonitor( )函數(shù)代碼明確的跳轉(zhuǎn)到ROM_WARM_ADRS地址處開始執(zhí)行。  

    ROM_SIZE:ROM實際大小。  

    RAM_LOW_ADRS:裝載Vxworks的地址。  

    RAM_HIGH_ADRS:將Boot Rom Image拷貝到RAM的目的地址。  

    注意:RAM_LOW_ADRS 和 RAM_HIGH_ADRS 都是絕對地址,通常位于DRAM起始地址的偏移量處,該偏移量取決于CPU結(jié)構(gòu),這需要參考VxWorks內(nèi)存分布。對于ARM的內(nèi)存分布請看圖3,從圖3可以看出RAM_LOW_ADRS在DRAM+0x1000處。這些地址對于S3C4510B來說都應(yīng)該是重映射后的地址。  

    (3)修改config.h文件  

    主要是修改ROM_BASE_ADRS、ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS和undef掉不需要的部分。注意這些應(yīng)該和makefile文件中設(shè)置的一致。  

    (4)修改romInit.s文件  

    CPU一上電就開始執(zhí)行romInit( )函數(shù),因此在romInit.s代碼段中它必須是第一個函數(shù)。對于熱啟動,處理器將會執(zhí)行romInit( )加上4后的代碼(具體參考sysLib.c中的sysToMonitor( )函數(shù))。更多的硬件初始化在sysLib.c中sysHwInit( )函數(shù)中,romInit( )的工作就是做較少的初始化并把控制權(quán)交給romStart( )(在bootInit.c文件)。  

    在S3C4510B處理器中,romInit.s文件主要做了以下幾個工作:  

    ① 禁止CPU中斷并切換到SVC32模式;  

    ② 禁止中斷控制器;  

    ③ 初始化SYSCFG、EXTDBWTH、ROMCON0、ROMCON1、DRAMCON0等寄存器,同時初始化了FLASH、SDRAM、DM9008等外圍設(shè)備;  

    ④ 將FLASH的內(nèi)容拷貝到SDRAM中;  

    ⑤ 改變FLASH和SDRAM的基地址,將SDRAM基地址改為0;  

    ⑥ 初始化堆棧指針;  

    ⑦ 跳轉(zhuǎn)到C程序romStart( )函數(shù)中。  

    在這里,只需要修改SYSCFG、EXTDBWTH、ROMCON0、ROMCON1、DRAMCON0等寄存器來設(shè)置FLASH、SDRAM、DM9008的基地址和大小即可。這需要根據(jù)板上的配置來修改,修改的內(nèi)容在wrSbcArm7.h文件中。  

    BSP基本部分就已經(jīng)修改完成,至于bootInit.c和bootConfig.c文件,我們一般不需要修改它,只是在調(diào)試過程中為了方便調(diào)試,可以將他們拷貝到BSP目錄下,然后修改makefile文件,在makefile文件中添加如下兩句。  

    BOOTCONFIG = bootConfig.c  

    BOOTINIT = bootInit.c  

    (5)利用tsfs(target server file system)下載  

    要利用tsfs下載VxWorks,首先需要配置以下內(nèi)容:  

    ① 在config.h文件中添加如下內(nèi)容  

    /* Serial port configuration */  

    #define INCLUDE_SERIAL  

    #undef NUM_TTY  

    #define NUM_TTY N_SIO_CHANNELS  

    #undef CONSOLE_TTY  

    #define CONSOLE_TTY 0  

    #undef CONSOLE_BAUD_RATE  

    #define CONSOLE_BAUD_RATE 38400  

    /*** WDB ***/  

    #ifdef SERIAL_DEBUG  

    #define WDB_NO_BAUD_AUTO_CONFIG  

    #undef WDB_COMM_TYPE  

    #undef WDB_TTY_BAUD  

    #undef WDB_TTY_CHANNEL  

    #undef WDB_TTY_DEV_NAME  

    #define WDB_COMM_TYPE WDB_COMM_SERIAL /* WDB in Serial mode */  

    #define WDB_TTY_BAUD 38400 /* Baud rate for WDB Connection */  

    #define WDB_TTY_CHANNEL 1 /* COM PORT #2 */  

    #define WDB_TTY_DEV_NAME "/tyCo/1" /* default TYCODRV_5_2 device name */  

    #endif /* SERIAL_DEBUG */  

    /* tsfs added by caiyang */  

    #define INCLUDE_TSFS_BOOT  

    并修改引導(dǎo)行為  

    #define DEFAULT_BOOT_LINE \\par "tsfs(0,0)host:vxWorks f=8 h=169.254.72.67 e=169.254.72.68 u=caiyang pw=caiyang"  

    注:串口1用來顯示引導(dǎo)信息,相當(dāng)于PC機中的顯示器,串口2用來下載VxWorks和調(diào)試。同時串口2波特率不能太高,經(jīng)測試115200好像不行。  

    ② 配置target server  

    啟動Tornado開發(fā)環(huán)境,選擇Tool->target server菜單。在下拉菜單中選“target server file system”并選中Enable File System,然后目錄指向Vxworks所在的地方。同時注意要把Tornado Registry打開,這樣配置完后點擊Launch按鈕即可連接成功,此后就可以通過串口2下載VxWorks和調(diào)試。





    圖片點擊可在新窗口打開查看

      

    一般情況下,我們首先調(diào)試好BSP,然后在調(diào)試網(wǎng)卡。所以在調(diào)試網(wǎng)卡前,我們需要用串口來下載VxWorks映像。  

    至此,我們的BSP就開發(fā)完成。  

    4 結(jié)論  

    在沒有調(diào)試BSP的硬件工具如仿真器的時候,我們只能通過點燈或者串口輸出來定位程序執(zhí)行的正確性。這大大增加了調(diào)試難度和進(jìn)程。對于BSP開發(fā),一般需要從一個模板來修改。BSP開發(fā)的正確性直接影響到VxWorks系統(tǒng)運行的穩(wěn)定性。
    主站蜘蛛池模板: 亚洲国产三级在线观看| 国产尤物二区三区在线观看| 久久av无码精品人妻糸列| 欧美人与性动交α欧美精品| 啦啦啦中文中国免费高清| 黄网站色视频免费观看45分钟| 天天射天天干天天色| 久久大香伊蕉在人线观看热2| 欧美人与物videos另| 动漫卡通精品3d一区二区| 野花香社区在线视频观看播放| 国内精品久久久人妻中文字幕| 中文字幕精品无码亚洲字| 日韩精品无码一区二区视频| 亚洲自偷精品视频自拍| 精品国产一区二区三区无码| 国产成人无码区免费A∨视频网站| 亚洲精品日韩中文字幕久久久| 久久久久亚洲av无码专区| 欧美一区二三区| 免费不卡在线观看av| 紫黑粗硬狂喷浓精| 国产成人无码一区二区在线播放| 99精品国产综合久久久久五月天| 尤物在线影院点击进入| 久久精品国产精品亚洲| 男生女生一起差差差带疼痛| 国产又大又硬又粗| 88久久精品无码一区二区毛片| 天天久久影视色香综合网| 中文字幕第一页在线播放| 日本牲交大片免费观看| 亚洲人成高清在线播放| 欧美激情综合亚洲五月蜜桃| 再深点灬舒服灬免费观看| 美女一级毛片免费看看| 国产成人免费手机在线观看视频| 91蜜芽尤物福利在线观看| 在线播放精品一区二区啪视频 | 青草青草伊人精品视频| 国产精品国产三级国产普通话 |