9/18/2015

DM368 SDBOOT-NANDWRITER

1. SDBOOT-NAND WRITER


   A. 관련파일 
         
        dm3xx_sd_boot-6.1.zip 

DM368 RDK에 포함이 되어있으며, 기본 동작방식은 아래와 같다.
보드가 SDBOOT를 한 다음, 자신의 SD FAT의 dm3xx.dat 데이타를 읽어 UBL, UBOOT, KERNEL 등,
NAND에 원하는 장소에 writing 및 erasing 하는 프로그램이다.
dm3xx.dat 은 각종 데이타를 포함하고 있다.



   B. 크로스컴파일러 설치  
 
     빌드 하기 위해서, 기존 크로스 컴파일러를 설정하거나 존재하지 않는다면 아래의 사이트에서 Tool을 다운 받은 후 진행하자. ARM용 크로스 컴파일러.
   
    http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_2_10/latest/index_FDS.html
 
    위사이트에서  MVL 5.0 Tools Download 
  •  SDK 버전 : mvl_5_0_0801921_demo_sys_setuplinux.bin
     
 export PATH=$PATH:/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/bin/


2. 기본파일 구성 

아래와 같이 dm3xx_sd_boot-6.1 안에 모든 파일이 포함이 되어있다.
그래서 SD BOOT와 혼동이 되지만, 이는 SDBOOT가 아니다.

   A. 설정파일 
  • dm3xx_sd.config  : 각 binary 설정 및 (original의 ubl,uboot 등) 및 dm3xx.dat 위치
  • original               :  자신의 UBL 및 UBOOT 와 Kernel을 Bin 파일을 넣는곳

   B. Main 프로그램
  • dm3xx_sd_boot   :  전체를 실행하는 main shell scripter  (설정파일과 같이 연동)

   C. UBL Descriptor
  • dm3xx_boot_rec  :  UBL Desicriptor 정의된 Hex Code 값. 매번 새로 생성됨

   D. PC에서 SD의 FAT에 IMAGE를 만드는 프로그램 (dm3xx_boot_make_image)
  • bin.x86 or bin.arm:  dm3xx_boot_make_image.c의  bin 파일 저장장소
  • dm3xx_boot_make_image.c :  PC에서 ARM에서 Image를 만들 때 사용.
  • Makefile :  확인부분 -DDM368_IPNC 및 -I sdcard_flash 가 제대로 되었는지 확인 

   E. TARGE에서 SD BOOT 후 NAND WRITE하는 프로그램
  • sdcard_flash: SD BOOT로 실행,dm3xx.dat기반으로 NAND에 install 
  • sdcard_flash/sdboot_flash_cfg.h : 설정값 변경가능


3. 수정사항 및 확인사항 

   A. 수정사항 
  • dm3xx_sd.config : 파일이름 수정 및 orginal에 파일 변경

$ pwd
/home/jhlee/dm368/dm3xx_sd_boot-6.1

$ cat dm3xx_sd.config
#!/bin/sh

# Adjust this file for your needs

a=${modelname:=DM368_IPNC} # default modelname
a=${platform:=DM36x} # default platform

case $modelname in
DM365_IPNC)
 ubl=original/ubl_297arm_270ddr_ipnc_dm365_1.0.0.bin
 uboot=original/u-boot-1.3.4_ipnc_dm365_1.0.0.bin
 diagnostic=original/diagnostic_ipnc_dm365_1.0.0.bin
 kernel=original/uImage_ipnc_dm365_2.0.0
    rootfs=original/cramfsImage_ipnc_dm365_2.0.0
 ;;
DM368_IPNC)
 ubl=original/ubl_432arm_340ddr_ipnc_dm368.bin
 uboot=original/u-boot-1.3.4-dm368_ipnc.bin
 diagnostic=original/diagnostic_ipnc_dm368.bin
 kernel=original/uImage_ipnc_dm368
 rootfs=original/ipnc_dm368_ubifs
 ;;
esac 

# Expected location boot data file on autimatically mounted SD card.
# Change if it is mounted at another location.
#data_file=`echo /media/disk/dm3xx.dat`
data_file=`echo /media/sdc/dm3xx.dat`


$ ls original/
diagnostic_ipnc_dm368.bin  nandwriter_ipnc_dm368.out    uImage_ipnc_dm368                 ubl_486arm_360ddr_ipnc_dm368.bin
ipnc_dm368_ubifs           u-boot-1.3.4-dm368_ipnc.bin  ubl_432arm_340ddr_ipnc_dm368.bin

  • sdcard_flash/sdboot_flash_cfg.h 

#define IPNC_DM368                 //Makeifle에서 추가가 안되서 넣음 

#if defined(IPNC_DM365) || defined( IPNC_DM368)
#define KERNEL_SIZE (2*MB)  -> (4*MB)   // KERN SIZE 조정
#define ROOTFS_SIZE (14*MB) -> (40*MB)  // FS SIZE 조정
#define DP_SIZE (160*KB)                // diagnostic size 유지 
#else
~~~~~
#endif 

#define ROOTFS_SDC      0x800000   // KERN SIZE 때문에 위치 조정  

현재 sdboot_flash_cfg가 dm3xx_boot_make_image.c 에서도 사용
하지만, Makefile에서 이를 추가가 안됨

   B. 확인사항

      diagnostic : DP_SDC:


4. 기본사용법


4.1 기본절차


   A. PC에 SD DISK Mount 확인 및 FAT Format 및 UBL Descriptor 저장

$ cat /proc/partitions
$ sudo ./dm3xx_sd_boot format /dev/sde 

   B. SD DISK의 FAT Mount 확인  (udev가 동작안될 경우)

$ sudo mount /dev/sde1 /mnt/sdc
$ ls /mnt/sdc
dm3xx.dat 

   C. UBL,UBOOT및 각종 BIN파일을 SD의 dm3xx.dat에 저장 

$ sudo ./dm3xx_sd_boot data /mnt/sdc/dm3xx.dat
$ sudo umount /mnt/sdc


4.2 관련문서 

  http://processors.wiki.ti.com/index.php/SD_card_boot_and_flashing_tool_for_DM355_and_DM365