470 阿裏雲 技術社區[雲棲] 使用JLink間接燒寫S3C2410、S3C2440開發板Nor、Nand Flash的方法 1. 簡要說明 JLink的調試功能、燒寫Flash的功能都很強大,但是對於S3C2410、S3C2440的Flash操作有些麻煩:燒寫Nor Flash時需要設置SDRAM,否則速率很慢;燒寫Nand Flash隻是從理論上能夠達到,但是還沒有人直接實現這點。 本文使用一個間接的方法來實現對S3C2410、S3C2440開發板的Nor、Nand Flash的燒寫。原理為:JLink可以很方便地讀寫內存、啟動程序,那麼可以把一個特製的程序下載到開發板上的SDRAM去,並運行它,然後使用這個程序來燒寫。 2. 操作步驟 2.1 連接硬件 對於大多數的S3C2410、S3C2440開發板而言,它們所用的JTAG接口一般有3種(如圖1所示),其中前兩種用得比較多。(原文件名:3種jtag.JPG) 但是市麵上的JLink,大多隻支持第3種JTAG接口,所以需要用到轉接板。或者直接使用JLink的變種,如圖2所示的兩種改進版JLink:(原文件名:2種jlink.JPG) 以mini2440為例,如圖3接好JTAG線。(原文件名:JLink_2440.jpg) 2.2 運行J-Link commander J-Link commander啟動界麵如圖4所示,(如果沒有發現檢測到CPU,就在裏麵執行usb命令連接JLink,再執行r命令識別處理器)。(原文件名:JLINK啟動界麵.JPG) 2.3 下載運行特製的程序 對於S3C2410、S3C2440處理器,它們內部有4K的SRAM,當使用Nor Flash啟動時,地址為0x40000000;當使用Nand Flash啟動時,地址為0。 對於S3C2410、S3C2440開發板,一般都外接64M的SDRAM。SDRAM能被使用之前,需要經過初始化。 所以,先把一個init.bin下載到內部SRAM去運行,它執行SDRAM的初始化;然後再下載一個比較大的程序,比如u-boot到SDRAM去動行,它將實現對Nor、Nand Flash的操作。 以下是在J-Link commander裏的命令,假設init.bin、u-boot.bin在e:盤下。 1. speed 12000 //設置TCK為12M,下載程序時會很快 2. 下載並運行init.bin,這是用來初始化SDRAM的 2.1 如果是NAND啟動: loadbin e:\init.bin 0 setpc 0 g 2.2 如果是Nor啟動: loadbin e:\init.bin 0x40000000 setpc 0x40000000 g 3. 下載特製的uboot: h loadbin e:\u-boot.bin 0x33f80000 setpc 0x33f80000 g 上述操作命令可以參考圖5。(原文件名:使用jlink下載運行uboot.JPG) 現在,u-boot已經啟動了,在串口工具上可以看到如圖6所示界麵,以後就可以通過網絡、串口下載文件,然後使用u-boot裏的命令進行燒寫。 (原文件名:u-boot啟動界麵.JPG) 當然,如果沒有網絡,也不想忍受串口的速率,也可以通過jlink commander下載,比如: h loadbin your_file.bin 0x30000000 g 這時,你的文件已經被下載到SDRAM 0x30000000去了。 後麵的操作就是u-boot的命令了。 2.4 使用u-boot燒寫Flash 以例子為例,假設需要燒寫一個名為leds.bin的程序到Nor、Nand Flash,那麼請參考: (1).通過Jlink下載: 在J-Link commander裏執行: h loadbin e:\leds.bin 0x30000000 g 注意leds.bin的大小 (2).通過u-boot燒寫到Nor Flash: 在u-boot裏執行: protect off all // 解鎖 erase 0 2ffff // 擦除從0地址開始的大小為0x30000的NOR Flash扇區(大小為可擦除塊的整數倍,可以運行flash info命令查看) cp.b 0x30000000 0 30000 // 把前麵下載到0x30000000的程序燒寫到NOR去 (3).通過u-boot燒寫到Nand Flash: 在u-boot裏執行: nand erase 0 30000 // 擦除從0地址開始的大小為0x30000的Nnad Flash扇區 nand write.jffs2 30000000 0 30000 // 把前麵下載到0x30000000的程序燒寫到Nand去 注意,上麵用的2ffff、30000等數字是192K,如果你的程序比較小,請自行設置。 收藏42 回複 舉報 論壇公益廣告:使用360產品將會被封鎖ID。周流氓槍斃1萬次也無法彌補3721犯下的罪行。 heky heky 當前離線 積分 1423 2樓 發表於 2009-3-4 14:37:36 | 隻看該作者 好東西 回複 舉報 公益廣告:發表新主題時,務必起一個能說明帖子內容的清晰標題,否則將會被封鎖ID(點擊查看詳細說明) juedi juedi 當前離線 積分 435 3樓 樓主| 發表於 2009-3-4 14:38:19 | 隻看該作者 init.bin用匯編寫成,位置無關,可以在任何地方執行。 u-boot.bin也是經過了我的大量修改,可以適用於友善之臂、優龍、揚創等等開發板,具備以下特點: 1. 支持CFI、JEDEC接口的NOR FLASH 2. 支持各種NAND FLASH 3. 支持網絡CS8900、DM9000 4. 支持USB下載 5. 支持燒寫YAFFS文件係統映象 下載地址為:https://ouravr.com/bbs/bbs_upload34876/files_12/ourdev_422781.rar 這兩個程序是我為了基於FT2232D的OpenJTAG編寫、修改的,後來想想在JLink上也可以使用。 實際上,針對基於FT2232D的USB JTAG工具,我已經編寫了一個NOR、NAND FLASH燒寫器,目前JLINK燒寫NAND的工具還在研究中。 這是一種間接的、麻煩的、通過u-boot燒寫NOR、NAND的方法,但是:速度很快,並且對於JLink似乎也沒人搞定燒寫NAND。 最後更新:2017-04-03 14:54:43 上一篇: 安裝XML 功能定義文件方法 下一篇: 使用dic集合 加載xml文檔 並顯示至TreeView控件相關內容 git config 低價做營銷網站陷阱,您了解嗎? 電商那些年,我摸爬打滾出的高並發架構實戰精髓(續) Java Socket實戰-多線程通信 傳輸對象 傳輸壓縮對象 3D打印將有助於醫療行業的發展 黑客利用IE關鍵bug,微軟承諾發布補丁 Java 25天基礎-DAY 06-麵向對象-ststic關鍵字 解決httpclient傳中文亂碼問題 asp.net中viewState的應用 《TensorFlow技術解析與實戰》——第2章 TensorFlow環境的準備 2.1下載TensorFlow 1.1.0 熱門內容 PostgreSQL 路徑規劃插件 pgruoting 介紹 人生不過如此 《STM32庫開發實戰指南:基於STM32F4》----導讀 解密區塊鏈:從基礎概念到技術實現的進階攻略 ZED Board從入門到精通(三):從傳統ARM開發到PS開發的轉變 [圖文]曆屆奧斯卡影帝(上) 紮克伯格發6千字長文,談Facebook未來願景和世界該有的樣子 VS 添加jQuery智能提示 python3學習 突破吞吐限製,多NAS性能聚合方案,數據上傳及讀寫最新內容 駐雲Gartner聯合發布人工智能時代的MSP白皮書 雲端安全之三:最佳實踐 突破吞吐限製,多NAS性能聚合方案,數據上傳及讀寫 如何同步TableStore數據到OSS 百億級全網輿情分析係統存儲設計 在ECS中訪問各類阿裏雲雲資源的正確姿勢 不外傳的seo計劃教程方案 網站有收錄沒排名的原因與解決辦法 燃!阿裏的技術小哥們又又又拿冠軍了! 如何將個性化需求變成大數據解決方案