【NanoPi T2】 1.裸機開發(S5P4418)


拿到nanopi t2很長一段時間了,一直沒什麼時間寵她,喫灰好久,哈哈哈!
廢話不多說,接下來進入主題:
首先s5p4418是IROM啓動方式,SD卡啓動條線nanopi已經爲我們準備好了。
ARM-cortex A 系列芯片一般的的啓動過程是iROM(bl0)->bl1->uboot
4418的啓動方式有所不同:iROM->Nsih.bin->2ndboot.bin->uboot
bl1階段被三星硬生生分成了兩個部分,對應SD卡中的地址如下:

塊地址 內容
Block 0 Sd/emmc卡信息
Block 1 Nsih.bin
Block2-Block63 2ndboot.bin
Block64 Nsih.bin(boot.TBI)
Block65-BlockX u-boot.bin

啓動過程:iROM ⇒ Nsih.bin ⇒ 2ndboot.bin(讀取boot.TBI,拷貝u-boot.bin) ⇒ u-boot.bin

由於iROM和2ndboot.bin都是閉源的,所以考慮先複製鏡像包中的二進制機器碼暫時使用。

1.擦除sd卡

sudo dd if=/dev/zero of=/dev/sdd

2.查看uboot可用空間

#fdisk /dev/sdd
#p
在這裏插入圖片描述

可以看到第一個分區起始塊爲2048,所以可以先複製2048個塊吧MBR+啓動代碼+uboot完整複製下來

3.提取MBR+啓動代碼+uboot保存成complete-boot.bin

dd if=s5p4418-kitkat-sd8g-20171017.img of=complete-boot.bin bs=512 count=2048

4.寫入sd卡測試啓動

dd if=complete-boot.bin of=/dev/sdd
在這裏插入圖片描述
可以看到啓動正常,不能讀取內核
bl

5.獲取鏡像包中Block 0~Block 65的內容保存成uboot-bl1.bin

dd if=s5p4418-kitkat-sd8g-20171017.img of=uboot-bl1.bin bs=512 count=65

6.寫入bl1啓動

在這裏插入圖片描述
啓動正常,不能加載uboot

7.提取Nish寫入(記得擦除SD卡數據)

dd if=s5p4418-kitkat-sd8g-20171017.img of=Nish.bin bs=512 count=2
在這裏插入圖片描述
運行結果很相似

8.編寫裸機代碼插入運行

先保留2nboot,將裸機代碼插到這後面運行,等於是替換了uboot
結果不管替換2nboot還是uboot都可以順利電燈,替換uboot需要將連接地址設爲0x42C00000

.text
	.global  _start

_start:
	b _test_start
	b _test_start
	b _test_start
	b _test_start
	b _test_start
	b _test_start
	b _test_start
	b _test_start
	b _test_start

_test_start:
	ldr r1, =0x80000000

	ldr r0, =0xc001b004
	str r1, [r0]

	ldr r0, =0xc001b000
_my_loop:
	str r1, [r0]
	b _my_loop

loop:
	b loop

9.提取Nish.bin

dd if=s5p4418-kitkat-sd8g-20171017.img of=Nish.bin bs=512 count=1 skip=1

10.提取2ndboot.bin

dd if=s5p4418-kitkat-sd8g-20171017.img of=2ndboot.bin bs=512 count=62 skip=2

11.提取boot.TBI

dd if=s5p4418-kitkat-sd8g-20171017.img of=2ndboot.bin bs=512 count=62 skip=2

資源下載連接:https://download.csdn.net/download/qq_16054639/12370904

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章