欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9009|回復: 3
打印 上一主題 下一主題
收起左側

自制廉價的Arm9 開發平臺

[復制鏈接]
跳轉到指定樓層
樓主
ID:104835 發表于 2016-2-5 01:33 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
摘要:基于Arm9內核的單片機,由于其低廉的價格與優越的性能,已經被廣泛的應用于各種消費類電子產品中。掌握Arm9單片機的開發技能已經成為嵌入式系統開發者的迫切要求。但由于市面上的Arm9開發板價格不菲,使不少想學習Arm9開發技術的朋友望而卻步,其中有一大部分是各大高校的學生。本文闡述了改造ipTIME的IP0422路由器,使其成為VxWorks和Linux的Arm9開發平臺的過程。整個過程簡單易行,同時花費在150元以內,是嵌入式系統開發愛好者不錯的選擇。
1 改造系統的選取
    要動手改造Arm9開發系統,首先要選取一款進行改造的產品。現在基于Arm9內核的單片機被廣泛的應用于家用路由器和手機當中,因而這兩類產品可以作為我們尋找改造對象的范圍。但由于手機總體的價格偏高,同時集成度比較高,電路系統復雜,因而不適合作為我們改造的對象。而路由器恰恰相反,現在100多元的路由器比比皆是,而且這些路由器基本使用單芯片,該芯片除了具有Arm9核心的控制功能外,還具有硬件上的路由算法支持,因而電路相對簡單,便于改造,所以廉價的路由器就是改造Arm9開發板的合適對象。經過反復比較以后,最終選擇了ipTIME的IP0422。該款路由器的市場價格在100元左右,主芯片為KS8695X,是高度集成化的網絡通訊處理器,具有ARM922T內核。同時該路由器還具有2M Flash,8M SDRAM,同時還留有一個SDRAM焊位,可以方便的把SDRAM的容量擴充為16M,為我們運行操作系統提供了足夠的空間。選擇該款路由器的另一個主要原因時KS8695X芯片提供了完備的開發資料,可以方便的從Micrel公司的FTP上
下載獲得(文中所涉及到的芯片相關資料都從該FTP下載)。開發資料中包括了供KS8695X DEMO板運行的Linux操作系統的源代碼和VxWorks系統的BSP源代碼包,雖然KS8695X DEMO與我們進行改造的路由器的硬件配置不同,但只要做少許移植工作,便可以讓以上程序支持我們的開發板,大大簡化了我們的改造過程。IP0422路由器改造完成的電路板和電路板版本號如圖1所示。以下將從硬件改造與軟件DEMO移植兩方面,詳細闡述對IP0422的改造過程。
   
圖1 改造完成電路板與電路板版本號
2 硬件改造
2.1 串口
串口對一個嵌入式系統是致關重要的,通過串口可以與嵌入式系統進行交互。我們首先進行系統的串口改造。如圖2所示,電路板上原本就將串口以4星條針的形式引出,估計是為了以后方便維修而設置的。經過分析發現,為了抗干擾,電路板上將主芯片串口的RX管腳進行了上拉,因而在一般使用中主芯片不會接收到任何的輸入信號。所以我們對串口的改造分為兩步:1、去掉RX管腳上的上拉電阻;2、自己搭建一個串口電平轉換電路,使串口可以與PC機通信。串口各管腳定義與要去掉的電阻如圖2所示。

圖2 串口電路
    串口電平轉換電路負責單片機串口與PC機串口間電平的轉換工作,使兩者可以正常通信。串口電平轉換電路使用最多的是MAXIM公司的產品,在這里可以使用 MAX3232或MAX232,兩者連接的電路原理圖是相同的。由于MAX3232是使用3.3V進行供電的,所以可以直接與上圖所示的4個管腳進行連接。若使用MAX232芯片,則要將芯片的供電管腳與電路板上輸入電源5V相聯。我使用的是MAX232芯片,5V電源端的連接如圖3所示。 MAX232、MAX3232連接原理圖如圖4所示:

圖3 MAX232 5V連接端

圖4 MAX232、MAX3232連接原理圖
由于以上接口電路比較簡單,假如沒有現成的串口電路板,可以直接購買面包板,在上面搭建,以后所說的接口電路也可用此方法構建,不再贅述。將相應的電路連接好后,與PC機的串口相連,打開串口工具DNW(超級終端也可以),設置波特率為38400,數據位為8,奇偶校驗為無,停止位為1,硬件流控制為0(后面使用的串口設置只有波特率不同,其他設置都按此設置)。連接開發板的電源后,可以看到路由器啟動時的提示信息,如圖5所示,說明串口改造成功。
  
圖5 IP0422啟動串口輸出
2.2 JTAG接口
    JTAG接口是作為開發板必須具備的。我們可以通過JTAG接口對板上的程序進行簡單的調試,同時,還可以通過JTAG,將程序下載到板上的SDRAM中,對板上的Flash進行擦寫操作。
    對JTAG的改造要比串口困難,因為電路板上并沒有為我們引出該接口,我們只有自己想辦法做一個引出接口。如圖6所示,圖示位置將電路板的絕緣層用小刀刮掉,露出里面的銅箔,將一個2x10的條形插針一面的9個腳焊在該銅箔上,形成接地,這與我們將要使用的wiggle簡易JTAG接口是一致的,同時還可以起到固定整個插座的作用。條針的2腳與串口接口中的3.3V電源端相連,作為簡易JTAG接口的電源腳。然后將芯片上的與JTAG相關的各個管腳引出。如圖6所示,綠色線一端連條針的第5腳,一端連芯片TDI上拉電阻R27的一端;橙色線一端連條針的第7腳,一端連芯片TMS上接電阻R28的一端;藍色線一端連條針的第9腳,一端連芯片TCK上拉電阻R29的一端;白線一端連條針的第13腳,一端直接與芯片的TDO(113腳)相連。其中白色線與芯片的 TDO(113腳)相連端是焊接的難點,由于芯片管腳太密,直接焊接很容易照成相鄰管腳間的短路,所以建議將該管腳翹起來(如圖6所示),然后再焊接,操作時要十分小心。
   
圖6 JTAG接口與相應連線
  
圖7 簡易JTAG接口原理圖
     接口構造完成后,可以使用wiggle的簡易JTAG口與計算機的并口相連。Wiggle的電路原理圖如圖7所示。從
http://twentyone.bokee.com/網站,下載H-JTAG軟件,進行安裝后,啟動H-JTAG軟件,應該可以檢測到連接的芯片是ARM922T的內核。再使用H-JTAG配合AXD調試軟件對芯片的存儲區域,寄存器進行讀寫,如讀寫正常,說明接口改造成功。在使用AXD時,可能會出現這樣的現象,先連接PC機并口與板上的JTAG口,再給路由板上電,然后啟動AXD時可能會報錯。解決的方法是先給路由板上電,然后再將JTAG口插到PC機的并口上,最后再啟動AXD,可以解決以上問題。
2.3 擴充SDRAM
    路由板上的SDRAM只有8MB,由于Demo板的SDRAM是16MB,為了方便直接運行Demo板的Linux系統,需要為路由板擴充8M SDRAM。板上使用的SDRAM型號為IC42S16400-7TG,在市場中并不常見,根據查看該型號SDRAM的規格書,我們選取與其兼容的 HY57V641620HG型號的SDRAM。由于路由板上原來就留有另一片SDRAM的焊接位置,擴充比較容易,只需要在焊接時注意芯片的1腳的位置,不要將芯片焊反了。SDRAM周圍缺少的器件也都要焊上,排阻為33歐姆,電容使用0.1uF。由于原來路由器中的程序會檢測外圍SDRAM的數據寬度,進行SDRAM擴充后,原來程序將自動用32位數據寬度進行訪問。所以在擴充SDRAM后,給路由板上電如串口輸出正常(如圖5所示),則說明擴充成功。
    經過以上步驟,路由板的硬件改造已經完成,接下來就是要編寫,移植軟件,使路由板成為VxWorks與Linux操作系統的開發平臺。
3 軟件編寫
3.1 Flash燒寫軟件
    由于擴充了JTAG接口,我們可以自己編寫一個程序,對板上的Flash進行擦寫。具體原理是在路由板啟動后,通過AXD中的命令行,設置KS8695X 中的寄存器,將Flash與SDRAM映射到特定的區域,然后將擦寫程序下載到SDRAM中運行,對板上的Flash進行編程。關于這方面文章網上已經有很多,同時還提供有源代碼,在此就不再贅述。這里只把要點說一下。由于Arm9芯片具有MMU單元,默認的路由板上的原始程序是Linux,默認情況下會把MMU單元打開,使用數據緩存,所以我們在AXD Command窗口中執行內存區域配置時,要先把開著的MMU單元和數據緩存關閉,這樣對KS8695寄存器的配置才會正確。對MMU中寄存器的設置如下圖所示:
   
圖8 AXD中CP15寄存器的設置
    在Command窗口中鍵入命令obey C:\cfg.ini(假定自己編寫的配置文件cfg.ini在C盤根目錄下),SDRAM被映射到了0x0—0xFFFFFF區域,Flash被映射到了0x2800000—0x29fffff區域。將Flash燒寫程序下到0x0處開始運行,將串口波特率設置為115200,串口輸出如圖9所示。按 “1”鍵選擇燒寫Flash,從DNW的“serial port”菜單中選transmit,然后選擇發送要燒錄的文件就可以對Flash進行擦寫了。我的路由板上使用的Flash芯片型號為Spansion 公司的S29AL016D70,不同型號的Flash,扇區分布與廠家ID可能不同,擦寫協議也有可能不同,要對相應部分的程序做適當的修改。
  
圖9 Flash擦寫程序串口輸出
3.2 VxWorks BSP包的移植
    Demo程序自帶VxWorks的BSP包。根據Demo板的Datasheet[1]和VxWorks說明文檔[2]中的說明,我們選擇與這塊路由板的配置基本相同的KS8695X構建目標進行改造。經過比較兩者最大的差別就是在Flash部分,因而需要改寫BSP包中與Flash接口的部分。其中包括 Flash的初始化、擦寫邏輯、程序在Flash中的布局,文件系統與Flash的接口等[3]。涉及到的主要文件與實現的功能如表1所示:


文件名
修改說明
Ks8695p.h、config.h
提供路由板相關寄存器設置值
flashFsLib.c
實現FAT文件系統接口
flashDrvLib.c
實現Flash操作接口
flashAmdMem.h、flashAmdMem.c
具體實現S29AL016D70的各種操作
flashMem.h、flashMem.c
提供程序在Flash中存儲的位置和系統記錄啟動參數的接口

表1 BSP修改相關文件說明
    將相關文件修改好后,根據BSP說明[2]中的方法編譯bootrom,選擇的編譯目標是KS8695X。接下來根據說明中的方法編譯適用于網絡下載的 VxWorks映象和適用于Flash引導的VxWorks映象,同樣使用的編譯目標是KS8695X。將bootrom下載到路由板上,同時設置好 FTP服務器,設置串口波特率為9600,默認情況下bootrom通過FTP從網絡上下載引導啟動VxWorks映象,啟動過程如圖10所示。也可以修改bootrom中的啟動參數,從Flash的FAT文件系統中引導啟動VxWorks映象,啟動過程如圖11所示。經過修改的BSP實現原有BSP的所有功能,各項功能的使用及參數設置參見BSP說明[2],在此不再贅述。
  
圖10 網絡引導VxWorks輸出

圖11 Flash引導VxWorks輸出

開發包中帶有供Demo使用的Linux系統,由于Demo板使用的Flash為4M[4],該Linux系統中Linux內核加上文件系統有2M多,路由板上使用的是2M的Flash,而且沒有擴充的可能性,顯然不能直接使用。經過對Demo板自帶的引導程序的分析,發現Demo板在運行Linux前,引導程序將Linux系統整個拷貝到16M的SDRAM中運行。我們的路由板已經擴充為16M的SDRAM,所以我們可以不將Linux系統存儲在 Flash中,而直接使用網絡,將Linux系統下載到SDRAM中然后運行。當然,要將Linux直接下載到SDRAM中運行,還需要有引導程序的幫助。u-boot是Arm系統中廣泛使用的引導程序,同時其中已經有使用KS8695芯片的構建目標,目標的配置名稱是cm4008,所以我們選擇在原來的構建目標上進行改造,將u-boot移植到我們的路由板上。關于u-boot的移植的文章網上很多,移植方法在此就不再贅述,涉及到的主要文件與實現的功能如表2所示:



文件名
修改說明
include\configs\cm4008.h
u-boot特定平臺的配置文件
include\asm-arm\arch-ks8695\platform.h
硬件平臺的參數設置
board\cm4008.c
u-boot初始化設置
board\flash.c
u-boot中flash的接口部分
drivers\ks8695eth.c
u-boot中使用KS8695的驅動

表2 Linux修改相關文件說明
    需要特別注意的是u-boot中自帶的KS8695芯片的網口驅動是使用路由板上的LAN口[5],而不是WLAN口,因而在下載Linux系統時網線應該插在LAN口上。同時,該驅動程序在復位網口時有個錯誤,會導致除第一次下載文件正常外,后續的下載文件都發生錯誤,需要手動修改源文件加以修正。將串口波特率設置為115200,啟動u-boot。通過設置u-boot環境變量,修改串口波特率為38400,設置路電板的IP地址和PC機端的IP程序。以及默認的引導參數bootcmd,如圖12所示。

圖12 u-boot默認參數的設置
其中zImage和ramdisk.gz分別是Demo板Linux系統編譯所得的Linux內核和文件系統,編譯的方法詳見開發包中帶的Linux說明手冊[4],param.bin是由Demo所帶的bootloader分析得到的啟動參數。將這些文件通過u-boot的TFTP功能下載到SDRAM中的指定位置,然后運行,串口輸出如下圖所示:

圖13 u-boot引導Linux輸出
啟動過程中會出現Flash設備加載錯誤,這是由于沒有修改Linux中的Flash驅動,由于Flash只是起到保存網頁設置的作用,因而不會影響Linux的正常運行,有興趣的朋友可以自己修改。啟動完成后,訪問Linux中的http設置網頁如圖14所示。

圖14 Linux設置網頁
4 結語
    本文詳細闡述了將IP0422路由器改造為適合于學習VxWorks與Linux操作系統的Arm9平臺的過程。整個過程花費低廉,改造過程簡單易行。同時在改造過程中還可以學到嵌入式系統軟件與硬件的多方面知識。該改造方案是動手能力強,同時又不想花很多錢購買開發板的嵌入式開發愛好者的不錯的選擇。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

板凳
ID:254411 發表于 2017-12-5 15:20 | 只看該作者
樓主威武
回復

使用道具 舉報

沙發
ID:160541 發表于 2017-1-7 09:59 | 只看該作者
頂一個。技術的真正價值源于實際應用,ARM的應用前景會越來越好,現在ARM也開始在工業控制行業和EOS(嵌入式操作系統)、MCU強強聯合了,易德電子的ARM架構+嵌入式OS+單片機控制的嵌入式工控電腦已經在醫療機械、工業控制、檢測設備、珠寶加工設備、激光設備等行業/產品上用了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表