国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

專題9-代碼搬移

2019-11-08 19:48:52
字體:
來源:轉載
供稿:網友

前面一節已經完成了內存的初始化,以mini2440為例,要完成bootloader的啟動,在板子上電后,cpu會自動將nand Flash中前4kb的內存拷貝到SRAM(墊腳石)中,再由墊腳石將nand flash中剩余的代碼拷貝到內存中。但是nand flash還沒初始化,可以嘗試將SRAM中的代碼搬移到內存中去:

SRAM的起始地址為0 內存的地址是0x30080000

代碼如下:

bl copy_to_ramcopy_to_ram: ldr r0, =0x0 ldr r1, =0x30008000 add r3, r0, #1024*4copy_loop: ldr r2, [r0], #4 str r2, [r1], #4 cmp r0, r3 bne copy_loop mov pc, lr

注意:b和bl都是相對跳轉,比如在鏈接器腳本中,.start的起始地址是0x30080000,但并不是將0x30080000賦值給pc指針,程序第一步跳轉到reset處,又反匯編可以看到reset的地址為0x3008058,pc指針的值=跳轉pc+偏差=0+0x58=0x58


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 名山县| 修文县| 阜宁县| 大竹县| 黎城县| 九龙县| 腾冲县| 达州市| 合山市| 黄陵县| 搜索| 云霄县| 咸宁市| 五华县| 柳州市| 喀喇| 独山县| 青川县| 五莲县| 福州市| 苗栗县| 玉林市| 阳泉市| 江津市| 大同县| 泌阳县| 林周县| 绍兴县| 扶绥县| 岳阳市| 布拖县| 礼泉县| 玛沁县| 海兴县| 闵行区| 河北省| 虞城县| 荔浦县| 博罗县| 会宁县| 德化县|