国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁都县| 江西省| 孝昌县| 凉山| 武山县| 金昌市| 靖西县| 林芝县| 香港 | 新巴尔虎左旗| 浠水县| 文化| 依安县| 南通市| 定西市| 三门县| 平邑县| 彭州市| 綦江县| 英超| 怀集县| 万宁市| 义乌市| 长顺县| 怀柔区| 达拉特旗| 安陆市| 沁阳市| 周至县| 军事| 平南县| 金川县| 荣成市| 东莞市| 南投县| 大关县| 唐海县| 衡阳市| 甘谷县| 海晏县| 靖江市|