日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 NOR Flash 中的supervivi 下载裸机程序到NandFlash

發布時間:2025/6/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 NOR Flash 中的supervivi 下载裸机程序到NandFlash 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


?不容易啊,終于把 將MDK程序下載到我的mini2440開發板上的nand flash的方法找到了,我是利用韋東山老師的那套方法即利用DNW和supervivi下載到nand flash的。當然,只是方法之一,因為我能隱約的感覺到還可以使用MDK直接下載。下面我就將下載到nand flash的方法步驟完整的貼出來。

?? 在講解方法之前,我還是想說明幾點原理,避免知其然而不知其所以然。

supervivi的各功能選項說明

???

?? 功能[x]:對Nand Flash進行默認分區,此命令僅對Linux系統有效。

?? 功能[v]:通過USB下載Linux Bootloader之vivi到Nand Flash的 vivi 分區

?? 功能[k]:通過USB下載Linux 內核到Nand Flash的 kernel 分區

?? 功能[y]:通過USB下載 yaffs 文件系統映像到 Nand Flash的 root 分區

?? 功能[a]:通過USB下載用戶程序到Nand Flash中,一般這樣的用戶程序為bin可執行文件,如2440test(需要支持超過4K限制)、uCos2(開發板中帶的uCos2支持 Nand Flash啟動)、U-Boot等;當然,也可以使其他任意大小的bin程序。

?? 功能[n]:通過USB下載WinCE之啟動程序Nboot到Nand Flash的root分區

?? 功能[l ]:通過USB下載WinCE的啟動logo

?? 功能[w]:通過USB下載WinCE發行映像NK.bin到Nand Flash

?? 功能[d]:通過USB下載程序到指定內存地址(通過DNW的Configuration/Option選項指定運行地址)并運行。對于我的mini2440開發板,SDRAM的物理起始地址是0x3000 0000,結束地址是0x3400 0000,大小為64MB,另外BIOS的USB下載功能時應指定地址在0x30000000 - 0x33de8000之間。

?? 功能[z]:通過USB下載Linux內核映像文件zImage到內存中,下載地址為0x30008000

? ?功能[g]:運行內存中的Linux內核映像,該功能一般配合功能[z]一起使用

?? 功能[f] :擦除Nand Flash,執行此功能將會擦除整片Nand FLash 中的數據

?? 功能[b]:啟動系統,如果燒入了Linux或者Wince,執行此命令將自動識別啟動系統

?? 功能[s]:設置Linux啟動參數,詳細見子菜單說明

?? 功能[u]:備份整個Nand FLash中的功能,通過USB上傳到PC存儲為一個文件,該功能類似于PC系統中經常用的Ghost工具

?? 功能[r]:使用備份出來的文件恢復到Nand FLash

?? 功能[q]:返回vivi的命令交互模式,在交互模式下輸入menu命令,則可以返回到菜單模式

?? 功能[i] :版本信息

韋東山DNW+Supervivi下載bin文件到Nand Flash的方法

?? ①在韋東山的書上,不止一次強調要將那些裸機程序下載到Nand Flash上運行。當從Nand Flash啟動CPU時,CPU會通過內部的硬件將Nand Flash開始4KB的數據復制到稱為“Steppingstone”的4KB的內部RAM中(起始地址為0),然后跳到RAM的地址0處開始執行。

?? ②通過 supervivi 的 d 命令是將程序下載到SDRAM就是內存的起始地址 0x30000000中的。這時候其實是從 Nor Flash啟動的。如果先從Nor Flash啟動,把程序直接下載到SDRAM中運行,就開始運行SDRAM中的代碼,把Steppingstone中4KB的代碼復制到SDRAM中,這個時候由于Steppingstone中的東西是未知的,所以會吧SDRAM中的代碼覆蓋掉,導致程序錯亂。

?? ③正確的方法是先從 Nor Flash 啟動,然后使用 v 命令(把程序下載到Nand Flash的vivi分區,而 vivi 分區的地址是 0x0-0x50000)下載程序到 Nand Flash,其實 v 命令的過程是通過DNW先把程序下載到SDRAM中,然后執行了 Nand寫操作,把 0x3000 0000 開始的那段代碼復制到了 nand flash 的0地址處,這樣就把代碼下載到了Nand Flash 中。然后再從 Nand Flash重新啟動,這樣Stepping Stone中就是 Nand Flash中的代碼了,本試驗就能正常運行了。(注意,這里隱含的意思是咱們的代碼大小只能限制在4KB以內,如果代碼大于4KB的話,還需要用到搬移,這個我以后會講的,看來我只能自己寫一個Bootloader了)。

MDK+Supervivi+DNW下載mini2440裸機程序步驟

?? 1、建立一個keil工程文檔,并命名為test

???

?? 2、修改自帶的S3C2440.s中的一處代碼,將CLOCK_SETUP???? EQU???? 0 修改為CLOCK_SETUP???? EQU???? 1

???

?? 3、編寫分散加載文件RuninFlash.sct,并存放在自己的工程目錄中

???

???

? 4、編寫main.c文件,本工程只含有這一個c文件

???

???

? 5、配置選項,只配置Linker和User選項,其他選項按默認值。

? Linker選項,配置后的內容如下圖,記得在Scatter File一欄添加咱們剛才編寫的RuninFlash.sct文件。

??

? User選項

? 在下圖Run User Programs ...下的Run #1一欄中添加自己的fromelf.exe文件,它一般存在你的MDK安裝目錄下的ARM/BIN40下,然后后邊輸入 --bin --output test.bin test.axf,這樣做的目的是為了生成可以利用DNW下載的bin文件

???

? 其他配置選項按默認值即可,無需改變。

? Target選項

???

?Output選項

?????

?? Debug選項

???

? Utilities選項

???

? 6、工作都應經做完了,現在可以點擊編譯了,如下圖

???

? 7、現在打開mini2440的開發板,撥到Nor Flash啟動,然后打開串口工具SecureCRT,在supervivi的界面中輸入v命令,如下

????

?? 8、打開DNW,然后點擊USB Port/Transmit,打開咱們的bin文件,就下載到了咱們的Nand Flash分區

???

? 9、將開發板的撥到Nand Flash啟動,然后重新啟動開發板,就可以看到開發板上的Led1和Led3亮了。

?? 自此,整個步驟已經講解完畢。

?? 該工程文件我上傳到:http://download.csdn.net/detail/mybelief321/5425961,請自行下載

總結

? 利用這種方法雖然是下載到了Nand Flash,但是他只限于4KB的代碼,如果代碼超過了4KB,那么久不能正常執行了,當然,有辦法解決它,那就是在啟動代碼中加一段將Nand Flash的代碼復制到SDRAM中去執行的功能,而不是在SRAM中執行。

? 要實現這個方法,我想我只能硬著頭皮去自己寫個bootloader了,幸虧自己已經了解了MDK自帶的啟動代碼了,現在要做的就是編寫搬移代碼,還有保證nand.o能連接在前4KB,這樣子就可以了,任重道遠啊,不知道還需要幾天才能搞定它啊!

?不容易啊,終于把 將MDK程序下載到我的mini2440開發板上的nand flash的方法找到了,我是利用韋東山老師的那套方法即利用DNW和supervivi下載到nand flash的。當然,只是方法之一,因為我能隱約的感覺到還可以使用MDK直接下載。下面我就將下載到nand flash的方法步驟完整的貼出來。

?? 在講解方法之前,我還是想說明幾點原理,避免知其然而不知其所以然。

supervivi的各功能選項說明

???

?? 功能[x]:對Nand Flash進行默認分區,此命令僅對Linux系統有效。

?? 功能[v]:通過USB下載Linux Bootloader之vivi到Nand Flash的 vivi 分區

?? 功能[k]:通過USB下載Linux 內核到Nand Flash的 kernel 分區

?? 功能[y]:通過USB下載 yaffs 文件系統映像到 Nand Flash的 root 分區

?? 功能[a]:通過USB下載用戶程序到Nand Flash中,一般這樣的用戶程序為bin可執行文件,如2440test(需要支持超過4K限制)、uCos2(開發板中帶的uCos2支持 Nand Flash啟動)、U-Boot等;當然,也可以使其他任意大小的bin程序。

?? 功能[n]:通過USB下載WinCE之啟動程序Nboot到Nand Flash的root分區

?? 功能[l ]:通過USB下載WinCE的啟動logo

?? 功能[w]:通過USB下載WinCE發行映像NK.bin到Nand Flash

?? 功能[d]:通過USB下載程序到指定內存地址(通過DNW的Configuration/Option選項指定運行地址)并運行。對于我的mini2440開發板,SDRAM的物理起始地址是0x3000 0000,結束地址是0x3400 0000,大小為64MB,另外BIOS的USB下載功能時應指定地址在0x30000000 - 0x33de8000之間。

?? 功能[z]:通過USB下載Linux內核映像文件zImage到內存中,下載地址為0x30008000

? ?功能[g]:運行內存中的Linux內核映像,該功能一般配合功能[z]一起使用

?? 功能[f] :擦除Nand Flash,執行此功能將會擦除整片Nand FLash 中的數據

?? 功能[b]:啟動系統,如果燒入了Linux或者Wince,執行此命令將自動識別啟動系統

?? 功能[s]:設置Linux啟動參數,詳細見子菜單說明

?? 功能[u]:備份整個Nand FLash中的功能,通過USB上傳到PC存儲為一個文件,該功能類似于PC系統中經常用的Ghost工具

?? 功能[r]:使用備份出來的文件恢復到Nand FLash

?? 功能[q]:返回vivi的命令交互模式,在交互模式下輸入menu命令,則可以返回到菜單模式

?? 功能[i] :版本信息

韋東山DNW+Supervivi下載bin文件到Nand Flash的方法

?? ①在韋東山的書上,不止一次強調要將那些裸機程序下載到Nand Flash上運行。當從Nand Flash啟動CPU時,CPU會通過內部的硬件將Nand Flash開始4KB的數據復制到稱為“Steppingstone”的4KB的內部RAM中(起始地址為0),然后跳到RAM的地址0處開始執行。

?? ②通過 supervivi 的 d 命令是將程序下載到SDRAM就是內存的起始地址 0x30000000中的。這時候其實是從 Nor Flash啟動的。如果先從Nor Flash啟動,把程序直接下載到SDRAM中運行,就開始運行SDRAM中的代碼,把Steppingstone中4KB的代碼復制到SDRAM中,這個時候由于Steppingstone中的東西是未知的,所以會吧SDRAM中的代碼覆蓋掉,導致程序錯亂。

?? ③正確的方法是先從 Nor Flash 啟動,然后使用 v 命令(把程序下載到Nand Flash的vivi分區,而 vivi 分區的地址是 0x0-0x50000)下載程序到 Nand Flash,其實 v 命令的過程是通過DNW先把程序下載到SDRAM中,然后執行了 Nand寫操作,把 0x3000 0000 開始的那段代碼復制到了 nand flash 的0地址處,這樣就把代碼下載到了Nand Flash 中。然后再從 Nand Flash重新啟動,這樣Stepping Stone中就是 Nand Flash中的代碼了,本試驗就能正常運行了。(注意,這里隱含的意思是咱們的代碼大小只能限制在4KB以內,如果代碼大于4KB的話,還需要用到搬移,這個我以后會講的,看來我只能自己寫一個Bootloader了)。

MDK+Supervivi+DNW下載mini2440裸機程序步驟

?? 1、建立一個keil工程文檔,并命名為test

???

?? 2、修改自帶的S3C2440.s中的一處代碼,將CLOCK_SETUP???? EQU???? 0 修改為CLOCK_SETUP???? EQU???? 1

???

?? 3、編寫分散加載文件RuninFlash.sct,并存放在自己的工程目錄中

???

???

? 4、編寫main.c文件,本工程只含有這一個c文件

???

???

? 5、配置選項,只配置Linker和User選項,其他選項按默認值。

? Linker選項,配置后的內容如下圖,記得在Scatter File一欄添加咱們剛才編寫的RuninFlash.sct文件。

??

? User選項

? 在下圖Run User Programs ...下的Run #1一欄中添加自己的fromelf.exe文件,它一般存在你的MDK安裝目錄下的ARM/BIN40下,然后后邊輸入 --bin --output test.bin test.axf,這樣做的目的是為了生成可以利用DNW下載的bin文件

???

? 其他配置選項按默認值即可,無需改變。

? Target選項

???

?Output選項

?????

?? Debug選項

???

? Utilities選項

???

? 6、工作都應經做完了,現在可以點擊編譯了,如下圖

???

? 7、現在打開mini2440的開發板,撥到Nor Flash啟動,然后打開串口工具SecureCRT,在supervivi的界面中輸入v命令,如下

????

?? 8、打開DNW,然后點擊USB Port/Transmit,打開咱們的bin文件,就下載到了咱們的Nand Flash分區

???

? 9、將開發板的撥到Nand Flash啟動,然后重新啟動開發板,就可以看到開發板上的Led1和Led3亮了。

?? 自此,整個步驟已經講解完畢。

?? 該工程文件我上傳到:http://download.csdn.net/detail/mybelief321/5425961,請自行下載

總結

? 利用這種方法雖然是下載到了Nand Flash,但是他只限于4KB的代碼,如果代碼超過了4KB,那么久不能正常執行了,當然,有辦法解決它,那就是在啟動代碼中加一段將Nand Flash的代碼復制到SDRAM中去執行的功能,而不是在SRAM中執行。

? 要實現這個方法,我想我只能硬著頭皮去自己寫個bootloader了,幸虧自己已經了解了MDK自帶的啟動代碼了,現在要做的就是編寫搬移代碼,還有保證nand.o能連接在前4KB,這樣子就可以了,任重道遠啊,不知道還需要幾天才能搞定它啊!

總結

以上是生活随笔為你收集整理的使用 NOR Flash 中的supervivi 下载裸机程序到NandFlash的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。