返回頂部
關(guān)閉軟件導(dǎo)航
位置:首頁(yè) > 資訊 > 其他>2Bootloader引導(dǎo)程序的設(shè)計(jì)

  在工程代碼編寫(xiě)之前要求對(duì)硬件器件有所了解,主要需要了解FPGA所需要的配置文件空間,還有Flash存儲(chǔ)結(jié)構(gòu)。例如:XC3S500E配置文件空間為2270208位,所以要根據(jù)它計(jì)算存儲(chǔ)應(yīng)用程序的基地址。AT45DB161D是串行接口的閃存芯片,它包含有17301504位,被組織為4096頁(yè),每頁(yè)512/528字節(jié)。除了主存儲(chǔ)器,AT45DB161D還包括2個(gè)SRAM數(shù)據(jù)緩沖區(qū),每個(gè)緩沖區(qū)512/528字節(jié)。在主存儲(chǔ)器正在編程時(shí),緩沖區(qū)是允許接收數(shù)據(jù)的,并且支持?jǐn)?shù)據(jù)流式寫(xiě)入。(此處為528字節(jié)/頁(yè))

  AT45DB161D的存儲(chǔ)器陣列分為3個(gè)級(jí)別的粒度,分別為扇區(qū)、塊與頁(yè)用flash實(shí)現(xiàn)鏈接跳轉(zhuǎn)。圖4對(duì)各個(gè)級(jí)別進(jìn)行了分析,詳細(xì)說(shuō)明了每個(gè)扇區(qū)與塊的頁(yè)數(shù)。所有的編程操作都是針對(duì)頁(yè)的。擦除操作可以作用于芯片、扇區(qū)、塊或頁(yè)。

  最后利用定義的空函數(shù)int(*boot_app_jump)(void);”將地址指針指向內(nèi)存的應(yīng)用程序基地址,使其從此處開(kāi)始運(yùn)行程序。

  //將目的地址賦給跳轉(zhuǎn)函數(shù)

  boot_app_jump=(int(*)(void))DESTINATION_AD-DR;

  //運(yùn)行跳轉(zhuǎn)函數(shù),使其在該函數(shù)地址開(kāi)始運(yùn)行程序boot_app_jump();

  3SPIFlash軟件引導(dǎo)過(guò)程及SPIFlash編程

  本實(shí)驗(yàn)使用簡(jiǎn)單的應(yīng)用程序(打印hello_world),即工程“hello_world”flash跳轉(zhuǎn)軟件 。工程serial_Flash_bootloader就是上面設(shè)計(jì)的引導(dǎo)程序。

  3.1編譯用戶應(yīng)用程序的二進(jìn)制文件

  由于應(yīng)用程序要在外部SDRAM中運(yùn)行,所以不需要初始化BRAM存儲(chǔ)器,如圖5所示。

  為了指明程序的開(kāi)始地址和應(yīng)用程序的可執(zhí)行文件的產(chǎn)生路徑,需要在編譯選項(xiàng)中設(shè)置。右鍵“應(yīng)用程序工程”用flash實(shí)現(xiàn)鏈接跳轉(zhuǎn),SetCompilerOptions在OutputELFfile中選擇可執(zhí)行文件的產(chǎn)生路徑,如XC3S500E\hello_world\hello_world.elfFLASH跳轉(zhuǎn)生成器 ,在ProgramStartAddress中鍵入程序執(zhí)行的起始地址(這里是SDRAM的基地址:0x90000000)。接下來(lái)編譯應(yīng)用程序工程,編譯完成后就會(huì)在XC3S500E\hello_world文件夾中產(chǎn)生hello_world.elf。為了后面對(duì)SPIFlash編程的需要,應(yīng)將elf轉(zhuǎn)變成二進(jìn)制形式的文件。這就需要利用cygwinshell窗口命令來(lái)完成,這個(gè)腳本提供了一個(gè)簡(jiǎn)單的命令實(shí)現(xiàn)這個(gè)目的。利用mb-objcopy-Obinaryoptions>ELFfileinput>bi-naryfiletooutput>命令就可以將elf轉(zhuǎn)變成二進(jìn)制形式的文件(.b文件)。

  ELFfileinput>bi-naryfiletooutput>命令就可以將elf轉(zhuǎn)變成二進(jìn)制形式的文件(.b文件)。

  bi-naryfiletooutput>命令就可以將elf轉(zhuǎn)變成二進(jìn)制形式的文件(.b文件)。

  命令就可以將elf轉(zhuǎn)變成二進(jìn)制形式的文件(.b文件)。

  例如:mb-objcopy-Obinary./helloworld/helloworld.elf./hello_world/hello_world.b用來(lái)在工程目錄下hello_world文件夾創(chuàng)建工程的一個(gè)hello_world.b的二進(jìn)制文件。生成的文件hello_world.b大約2KB左右用flash實(shí)現(xiàn)鏈接跳轉(zhuǎn) 。

  3.2Bootloader引導(dǎo)程序與硬件配置文件的生成

  serial_Flash_bootloader要初始化到BRAM中(即在“工程”上右鍵→BRAMInitializationandunmarka11)。

  這樣做的意義是在編譯Bootloader程序時(shí)就將它編譯后的執(zhí)行文件(.elf文件)加入到硬件system.bit中生成一個(gè)download.bit。這個(gè)文件既包含了系統(tǒng)硬件配置信息,又包括了Bootloader程序執(zhí)行文件。由于設(shè)置了初始化到BRAM中用flash實(shí)現(xiàn)鏈接跳轉(zhuǎn) ,所以在系統(tǒng)上電時(shí)才能使Bootloader程序自動(dòng)加載到片內(nèi)BRAM中運(yùn)行,實(shí)現(xiàn)程序的引導(dǎo)功能。只要利用EDK用軟件中downloadbitstram功能就可以實(shí)現(xiàn)上述功能。

如果您覺(jué)得 2Bootloader引導(dǎo)程序的設(shè)計(jì) 這篇文章對(duì)您有用,請(qǐng)分享給您的好友,謝謝
文章地址:http://www.meyanliao.com/article/other/Bootloaderydcxdsj.html
解放雙手無(wú)盡可能,有問(wèn)題添加天線貓微信
主站蜘蛛池模板: 日韩人妻系列无码专区| 亚洲AV无码一区二区三区鸳鸯影院| 久久久久亚洲AV无码永不| 无码人妻一区二区三区在线视频 | (无码视频)在线观看 | 国产成人年无码AV片在线观看| 亚洲人成影院在线无码观看| 人妻丰满熟妞av无码区| 狠狠躁天天躁中文字幕无码 | 久久久无码精品亚洲日韩蜜桃| 亚洲日韩精品无码专区| 少妇人妻偷人精品无码视频新浪| 天天看高清无码一区二区三区| AV无码久久久久不卡网站下载 | 精品久久久久久中文字幕无码| 无码H肉动漫在线观看| 国产热の有码热の无码视频| 日韩人妻无码一区二区三区| 亚洲AV永久无码精品一区二区国产| 无码精品A∨在线观看无广告| 亚洲6080yy久久无码产自国产| 影音先锋中文无码一区| 亚洲国产精品无码久久九九大片| 中文无码精品A∨在线观看不卡| 亚洲AV无码乱码麻豆精品国产| 无码乱人伦一区二区亚洲| 亚洲国产成人精品无码区在线秒播 | 日韩人妻无码精品系列| 亚洲真人无码永久在线| 亚洲av无码一区二区三区天堂古代| 久久午夜夜伦鲁鲁片免费无码影视 | 亚洲情XO亚洲色XO无码| 日韩AV无码一区二区三区不卡| 一本色道久久综合无码人妻| 亚洲中文字幕无码久久| 国产V片在线播放免费无码 | 亚洲精品无码AV人在线播放| 成人无码精品一区二区三区| 亚洲精品无码久久久久秋霞| 国产AⅤ无码专区亚洲AV| 精品久久久无码中文字幕|