網路城邦
上一篇 回創作列表 下一篇   字體:
The am5749 IDK eMMC boot with raw mode or fat mode
2021/04/23 16:12:49瀏覽391|回應0|推薦0


The am5749 IDK eMMC boot. (am57x, am5728)



Board:

am5749 IDK


SDK:

ti-processor-sdk-linux-am57xx-evm-06.03.00.106-Linux-x86-Install.bin


The am5749_IDK, the sysboot default is 0x8106.

Booting devices order is 

1:SD

2:QSPI_1


Changin sysboot from 0x8106 to 0x8102. 

(Moving resistor from R436 to R455)

Booting devices order is 

1:USB

2:SD

3:eMMC



[raw]


Plug in SD card and boot to linux.

SD card is /dev/mmcblk0

eMMC is /dev/mmcblk1


clear eMMC 1M bytes

dd if=/dev/zero of=/dev/mmcblk1 bs=512 count=2K

sync

reboot


dump MLO to eMMC at 0x100 sector, ROM will get it.

dd if=/run/media/mmcblk0p1/MLO of=/dev/mmcblk1 bs=512 seek=256


dump uboot.img to eMMC at 0x300 sector, MLO will get it.

dd if=/run/media/mmcblk0p1/u-boot.img of=/dev/mmcblk1 bs=512 seek=768


create file system on eMMC.

In order to keep zone for uboot.img, first partition must start at 4096 instead of 2048.

create partition on eMMC

fdisk /dev/mmcblk1 


list status of eMMC

p

Disk /dev/mmcblk1: 14.8 GiB, 15913189376 bytes, 31080448 sectors                                                       

Units: sectors of 1 * 512 = 512 bytes                                                                                  

Sector size (logical/physical): 512 bytes / 512 bytes                                                                  

I/O size (minimum/optimal): 512 bytes / 512 bytes                                                                      

Disklabel type: dos                                                                                                    

Disk identifier: 0x8d681464



create a new empty DOS partition table

o                                                                                                

Created a new DOS disklabel with disk identifier 0x875af9a3.


create partition#1

n

p

1

4096

+70M


list status of eMMC

p

Device         Boot Start    End Sectors Size Id Type                                                                  

/dev/mmcblk1p1       4096 147455  143360  70M 83 Linux


change partition#1 type from linux to dos

t

c


list status of eMMC

p

Device         Boot Start    End Sectors Size Id Type                                                                  

/dev/mmcblk1p1       4096 147455  143360  70M  c W95 FAT32 (LBA)


set bootable flag

a


list status of eMMC

p

Device         Boot Start    End Sectors Size Id Type                                                                  

/dev/mmcblk1p1 *     4096 147455  143360  70M  c W95 FAT32 (LBA)


create partition#2,

!!! Caution !!! the First setor is NOT 2048.

First setor is next to end of partition#1.

This case is 143360+1 = 143361

key in and fdisk will tell you 

Sector 143361 is already allocated.                                                                                    

First sector (147456-31080447, default 147456)

n

p

2

147456

[enter]


list status of eMMC

p                                                                                                

Device         Boot  Start      End  Sectors  Size Id Type                                                             

/dev/mmcblk1p1 *      4096   147455   143360   70M  c W95 FAT32 (LBA)                                                  

/dev/mmcblk1p2      147456 31080447 30932992 14.8G 83 Linux


write to /dev/mmcblk1

w


format filesystem

mkfs.fat /dev/mmcblk1p1 -n boot

mkfs.ext4 /dev/mmcblk1p2 -L rootfs


reboot and uto mount file system

partition #1 is vfat, empty it. just for compatibility.

partition #2 is ext4 for rootfs.

After running fdisk, mkfs.vfat, mkfs.ext4, and 

reboot, 

there are :

/run/media/mmcblk1p1

/run/media/mmcblk1p2

reboot


copy rootfs to mmcblk1p2.

There is a trick method: 

  create a am5749_IDK SD card with SDK.

  Plug in the SD card in USB with card reader.

  My case, the software location in /run/media/sda1 and /run/media/sda2.

copy all of file in /run/media/sda2 to mmcblk1p2.ext4

cp  /run/media/sda2/* /run/media/mmcblk1p2 -r


Press and hold reset button.

Remove SD card

Release reset button and test eMMC boot with raw mode.






[fat mode]


Plug in SD card and boot to linux.

SD card is /dev/mmcblk0

eMMC is /dev/mmcblk1


clear eMMC 1M bytes

dd if=/dev/zero of=/dev/mmcblk1 bs=512 count=2K

sync

reboot


check status of eMMC

fdisk -l /dev/mmcblk1 

Disk /dev/mmcblk1: 14.8 GiB, 15913189376 bytes, 31080448 sectors                                                       

Units: sectors of 1 * 512 = 512 bytes                                                                                  

Sector size (logical/physical): 512 bytes / 512 bytes                                                                  

I/O size (minimum/optimal): 512 bytes / 512 bytes


create partition on eMMC

fdisk /dev/mmcblk1 


list status of eMMC

p

Disk /dev/mmcblk1: 14.8 GiB, 15913189376 bytes, 31080448 sectors                                                       

Units: sectors of 1 * 512 = 512 bytes                                                                                  

Sector size (logical/physical): 512 bytes / 512 bytes                                                                  

I/O size (minimum/optimal): 512 bytes / 512 bytes                                                                      

Disklabel type: dos                                                                                                    

Disk identifier: 0x5b9b8212 


create a new empty DOS partition table

o                                                                                                

Created a new DOS disklabel with disk identifier 0x76a6abe2.


create partition#1

n

p

1

2048

+70M


list status of eMMC

p

Device         Boot Start    End Sectors Size Id Type                                                                  

/dev/mmcblk1p1       2048 145407  143360  70M 83 Linux



change partition#1 type from linux to dos

t

c


list status of eMMC

p

Device         Boot Start    End Sectors Size Id Type                                                                  

/dev/mmcblk1p1       2048 145407  143360  70M  c W95 FAT32 (LBA) 


set bootable flag

a


list status of eMMC

p

Device         Boot Start    End Sectors Size Id Type                                                                  

/dev/mmcblk1p1 *     2048 145407  143360  70M  c W95 FAT32 (LBA)


create partition#2

n

p

2

[enter]

[enter]


list status of eMMC

p   

Device         Boot  Start      End  Sectors  Size Id Type                                                             

/dev/mmcblk1p1 *      2048   145407   143360   70M  c W95 FAT32 (LBA)                                                  

/dev/mmcblk1p2      145408 31080447 30935040 14.8G 83 Linux  


write to /dev/mmcblk1

w


format filesystem

mkfs.fat /dev/mmcblk1p1 -n boot

mkfs.ext4 /dev/mmcblk1p2 -L rootfs


reboot and auto mount mmcblk1p1 & mmcblk1p2 to /run/media

reboot


copy boot and rootfs to mmcblk1p1 & mmcblk1p2.

There is a trick method: 

 create a am5749_IDK SD card with SDK.

 Plug in the SD card in USB with card reader.

 My case, the device node is located at /run/media/sda1 and /run/media/sda2.

cp /run/media/sda1/* /run/media/mmcblk1p1

cp /run/media/sda2/* /run/media/mmcblk1p2 -r

sync


Press and hold reset button.

Remove SD card

Release reset button and test eMMC boot with fat mode.







If the note help you, buy street cats a can of fish.

( 不分類不分類 )
回應 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=greatcat&aid=161876343