기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
우분트 서버의 이미지를 SD카드에 넣어서 부팅하는데는 성공했습니다.
prebuilt된 이미지는 : https://wiki.linaro.org/Boards/Arndale/Setup/EnterpriseUbuntuServer
그런데, SD카드의 내용을 eMMC에 옮겨 eMMC로 부터 부팅을 하고자 하고 있습니다.
이하 파일 내용입니다.
Boot Mode Jumper Settings
==========================
_________________________________
Jumpers->| 6 | 5 | 4 | 3 | 2 | 1 |
_________|___|___|___|___|___|___|
SD/MMC |OFF|OFF|OFF|ON |OFF|OFF|
_________|___|___|___|___|___|___|
eMMC |OFF|OFF|ON |OFF|OFF|OFF|
_________|___|___|___|___|___|___|
Flash u-boot and kernel from MMC to eMMC
=========================================
1. Have u-boot and kernel on MMC as usual
2. Boot till u-boot prompt from MMC and follow the steps below:
Read u-boot binaries from MMC:
------------------------------
mmc read 50000000 0x1 0x10
mmc read 60000000 0x11 0x20
mmc read 70000000 0x31 0x400
Read kernel and dtb from MMC:
-----------------------------
mmc read 40007000 0x451 0x2000
mmc read 42000000 0x2451 0x20
Write kernel:
-------------
mmc dev 1
mmc write 40007000 0x451 0x2000
mmc write 42000000 0x2451 0x20
Write u-boot:
-------------
mmc dev 1
mmc write 50000000 0x1 0x10
mmc write 60000000 0x11 0x20
mmc write 70000000 0x31 0x400
mmc dev 1 1 1
mmc write 50000000 0x0 0x10
mmc write 60000000 0x10 0x20
mmc write 70000000 0x30 0x400
Change the Jumper setting to boot from eMMC and switch on the board.
The u-boot will come up from eMMC. Stop at u-boot prompt and set
the env variables as below and reboot the board. The kernel should
come up from emmc.
setenv bootcmd 'mmc read 40007000 451 2000; mmc read 42000000 2451 20; bootm 40007000 - 42000000'
If you have your Ubuntu Enterprise file system in your MMC card partition 1, set the bootargs like below:
setenv bootargs 'root=/dev/mmcblk1p1 rw init=/linuxrc console=ttySAC2,115200 rootdelay=1'
----------------------------------------------------------------------------------
read에는 문제가 없는데,
mmc dev 1
mmc write 40007000 0x451 0x2000
에서, 에러가 발생합니다.
MMC write: dev # 1, block # 1105, count 8192 ... 0 blocks write: ERROR
혹시, 대처할 방법을 알고 계시면 가르쳐 주세요...
음....현재, mmc write는 안되는 것으로 알고 있습니다.
이유가 몇가지 있지만,
1. arndaleboard용 u-boot가 두 종류입니다.
- 삼성에서 작업된 배포본
- Linaro용
차이는 완전히 코드서부터 binary등이 틀린데 있습니다.
2. 삼성 배포본으로부터의 ubuntu server kernel booting
- BL1 문제 & devicetree 부분 때문에 부팅이 안됩니다.
- 즉, linaro에서 배포된 부트로더로만 현재 부팅이 될겁니다...특히 devicetree 적용은요.
3. 해서 저희도 두가지 부트로더를 다 사용하고 있습니다.
- 다만, 현재 JB-MR1인 3.4.5 커널을 기반으로 작업하고 있어서 3.7 커널 작업이 좀 delay되고 있습니다.
- 그 이후에 작업을 할 수 있도록 준비중에 있고, 천천히 3.7 커널 작업을 하고 있습니다.