第一章——2440及4412烧写代码

来源:互联网 发布:数据去哪些网站找 编辑:程序博客网 时间:2024/05/24 00:06

JZ2440

JZ2440有nor flash和nand flash,可以nor启动和nand启动,我习惯把nor中烧入u-boot,平时实验用nand。可以用如下命令在nor中的u-boot对nand进行烧写

tftp 30000000 u-boot.bin ; nand erase bootloader ; nand write 30000000 bootloader
用tftp时PC机上要启动tftp服务软件,或者用nfs直接从服务器下载

nfs 30000000 10.5.202.10:/work/nfs_root/boot.bin ; nand erase bootloader ; nand write 30000000 bootloader

烧写内核和文件系统同理

关于分区可以在u-boot下输入命令mtd查看,这是在u-boot代码中写的,可以自行修改,但是为了与内核一致一般为

 #: name                size            offset       mask_flags 0: bootloader          0x00040000      0x00000000      0 1: params              0x00020000      0x00040000      0 2: kernel              0x00200000      0x00060000      0 3: root                0x0fda0000      0x00260000      0


传到内存的数据为什么存到30000000这个位置呢??这就要看u-boot的内存分布


我们往内存中传数据的时候只要不破坏uboot的数据就可以了,由内存分布图发现0x30000000是个不错的选择


tiny4412

tiny4412可以eMMC启动和SD启动,由于友善之臂的uboot for tiny4412没有支持网卡,fastboot和superboot不开源,所以一般用dnw或用linux脚本烧写SD卡


网络烧写

uboot for tiny4412没有支持网卡,这让用网络调试的人情何以堪


dnw烧写

参考网上大牛的文章http://www.arm9home.net/read.php?tid=83474

8 格式化eMMC, u-boot模式下输入如下指令来格式化eMMC设备。>fdisk -c 1 320 2057 520执行后会返回分区信息,继续格式话分区1,2,3,4>fatformat mmc 1:1这句话意思是对mmc 1设备的第一分区格式作fat格式化。>ext3format mmc 1:2>ext3format mmc 1:3>ext3format mmc 1:4上面三个指令是分别对eMMC的分区2,3,4作ext3格式化。到此我们完成了对eMMC的设备的格式化。接下来我们要想办法烧录bl1.bin, bl2.bin, u-boot.bin, tzsw.bin烧录到eMMC中。9 从PC端下载固件到开发板Memory中。刚才我们重点介绍了dnw, 接下来我们要使用此工具来下载固件到开发板内存中。注意是下载到内存,把固件数据缓存起来,到时要烧录到eMMC中。首先我们要打开emmc设备u-boot下输入:>emmc open 1eMMC OPEN Success.!!                        !!!Notice!!!!You must close eMMC boot Partition after all image writing!!eMMC boot partition has continuity at image writing time.!!So, Do not close boot partition, Before, all images is written.!上面提示emmc开启成功,注意说明,emmc一旦打开,需要连续烧录,烧录完成后可以关闭emmc.10 接下来我们要运行dnwu-boot下面输入:>dnwOTG cable Connected!Now, Waiting for DNW to transmit data提示等待数据输入,这里就是等待我们从PC端通过DNW传送数据过来。此时在PC端终端串口,cd到u-boot目录所在路径user@~/u-boot/: 输入: dwn sd_fuse/tiny4412/E4412_N.bl1.bin此时u-boot中断会提示传送校验完成,此时已经把bl1.bin通过USB传送到了memeory的0xc0000000起始地址,大小8KB.接下来我们烧录bl1.bin到eMMC中,u-boot下继续输入:>mmc write 1 0xc0000000 0 0x10会提示写入信息,说明已经写入成功。这个是把刚才从PC端通过dnw下载下来的bl1.bin固件下载到emmc中,起始0, 16个block, 一个block是512B, 16*512=8*1024=8KB. 这个是bl1.bin的存放位置。以此类推,烧录bl2.bin. u-boot.bin, tzsw.bin-----------------------------------------------------------------------------------------------------------------------------------------------------u-boot终端继续输入:>dnwPC端输入: (注意输入内容是以 dnw 开始的,前面是当前路径,便于理解)user@~/u-boot/:  dwn sd_fuse/tiny4412/bl2.binu-boot下继续输入:>mmc write 1 0xc0000000 0x10 0x1Cbl2.bin实际大小约14K,分配的空间是16K. 其实是第16个block开始,写入28个block, 28*512B=14*1024=14K注意这个区域预分配是32个Block,所以下一个开始是32+16=48------------------------------------------------------------------------------------------------------------------------------------------------------u-boot终端继续输入:>dnwPC端输入: (注意输入内容是以 dnw 开始的,前面是当前路径,便于理解)user@~/u-boot/:  dwn u-boot.binu-boot下继续输入:>mmc write 1 0xc0000000 0x30 0x21Du-boot.bin实际大小约270K,分配的空间是328K. 其实是第48个block开始,写入541个block, 541*512B=270.5*1024 约270K------------------------------------------------------------------------------------------------------------------------------------------------------u-boot终端继续输入:>dnwPC端输入: (注意输入内容是以 dnw 开始的,前面是当前路径,便于理解)user@~/u-boot/:  dwn sd_fuse/tiny4412/E4412_tzsw.binu-boot下继续输入:>mmc write 1 0xc0000000 0x2c0 0xB8tzsw.bin实际大小约92K,分配的空间是160K. 其实是第704个block开始,写入184个block, 184*512=92*1024=92K ------------------------------------------------------------------------------------------------------------------------------------------------------启动分区到此全部写入完成,注意一定要关闭emmc,u-boot下继续输入:>emmc close 1eMMC CLOSE Success.!!关闭emmc设备,提示关闭成功。此时我们已经把启动文件全部烧录到了eMMC中。-------------------------------------------------------------------------------------------------------------------------------------------------------接下来我们可以把开发板的SW2拨动到NAND启动,同时u-boot中断输入reset, 并在电脑键盘按下任意键,此时我们可以看到:+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++U-Boot 2010.12-00000-g3e284d5-dirty (Jul 04 2014 - 17:40:58) for TINY4412CPU:    S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]        APLL = 1400MHz, MPLL = 800MHzBoard:  TINY4412DRAM:   1023 MiBvdd_arm: 1.2vdd_int: 1.0vdd_mif: 1.1BL1 version:  N/A (TrustZone Enabled BSP)Checking Boot Mode ... EMMC4.41REVISION: 1.1MMC Device 0: 3728 MBMMC Device 1: 1876 MBMMC Device 2: N/ARead... Bootmode reg 0x00000000 Get Bootmode reg 0xf3ca4c36 ModeKey Check... run normal_boot Net:    No ethernet found.Hit any key to stop autoboot:  0TINY4412 #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++大功告成啊,我们的u-boot已经成功写入到了eMMC中,并可以成功启动。


linux脚本烧写SD卡

主要是下面四条命令
dd iflag=dsync oflag=dsync if=./E4412_N.bl1.bin of=$1 seek=1  dd iflag=dsync oflag=dsync if=./bl2.bin         of=$1 seek=17  dd iflag=dsync oflag=dsync if=../../u-boot.bin  of=$1 seek=49  dd iflag=dsync oflag=dsync if=./E4412_tzsw.bin  of=$1 seek=705
E4412_N.bl1.bin为厂家自带,传说中的bl1
bl2.bin为u-boot的14字节加上校验码,传说中的bl2,主要作用是把u-boot.bin读到内存
u-boot.bin这才是主体
E4412_tzsw.bin为厂家自带,从名字上看是关于trustzone的,不去理会


fastboot烧写SD卡

README for FriendlyARM Tiny4412说明:本u-boot源代码由三星原厂提供,并由友善之臂修改移植,以适用于Tiny4412开发板平台。仅供嵌入式爱好者学习研究之用,友善之臂不对此提供任何技术支持和维护。-----------------------------------------------------1. Build uboota) 安装好toolchain (arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz)并设置好   环境变量PATH,保证可以正常使用。b) 解压 uboot_tiny4412-20130729.tgz 并进入相应的目录   tar xzf uboot_tiny4412-20130729.tgzc) 配置 uboot 并编译   cd uboot_tiny4412   make tiny4412_config   maked) 编译 用于生成bl2 的工具   make -C sd_fuse   或者   cd sd_fuse; make-----------------------------------------------------2. 制作启动 Tiny4412 的SD卡a) 先准备一张4G或以上的SDHC卡   注意:该卡的已有数据将会被破坏,因此请先对SD卡上的数据进行备份。b) fusing SD card   假设SD卡已被PC Linux识别为/dev/sdb, 以root用户运行以下命令即可:   cd sd_fuse/tiny4412   ./sd_fusing.sh /dev/sdb-----------------------------------------------------3. 使用SD卡启动 Tiny4412 并烧写Androida) 将已经制作好的SD卡插到 Tiny4412 板上,拨动S2切换到SDBOOT,同时连接   串口线到PC且假设已经准备好。b) 开发板加电,然后在串口控制台(如minicom),按任意键进入uboot 命令行模式c) 对SD卡进行分区   输入以下uboot命令即可对SD卡进行分区:   fdisk -c 0 320 806 518   重新分区后,可重新格式化FAT分区   fatformat mmc 0:1d) 进入fastboot模式以烧写Android   使用USB线连接Tiny4412的MICRO_USB口到PC,然后输入以下uboot命令:   fastboote) 烧写 Android 到SD卡   首先请准备好Android image,包括: zImage, ramdisk-u.img, system.img   在PC端输入以下命令进行烧写:fastboot flash kernel zImage              (烧写kernel)fastboot -w                               (格式化userdata和cache)fastboot flash ramdisk ramdisk-u.img      (烧写ramdisk)fastboot flash system system.img          (烧写system)f) 也可以在PC端通过fastboot烧写uboot到SD卡   先手动生成bl2.bin   cd sd_fuse/tiny4412   ../mkbl2 ../../u-boot.bin bl2.bin 14336   然后输入以下命令:  fastboot flash fwbl1 E4412_N.bl1.binfastboot flash bl2 bl2.binfastboot flash bootloader ../../u-boot.binfastboot flash tzsw E4412_tzsw.bin -----------------------------------------------------4. 使用SD卡启动 Androida) 如果是使用HD700,则烧写完成后直接重启Tiny4412 即可自动启动 Androidb) 如果是使用S700,则需要在uboot上设置kernel命令行参数:   setenv bootargs console=ttySAC0,115200n8 androidboot.console=ttySAC0 lcd=S700   saveenv   然后重启Tiny4412即可。


MiniTools工具烧写nand

只有 Superboot 配合才能使用 MiniTools 的 USB 下载功能,并且 Superboot 需要工作在 USB 下载模式才行,因此,请先做以下准备工作:

1. 用 SD-Flasher 工具将 Superboot 烧写到 SD 卡中。
2. 将光盘中的 images/FriendlyARM.ini 文件拷贝到 SD 卡中的 images 目录下。
3. 编辑 SD 卡中的 images/FriendlyARM.ini 文件文件, 增加以下内容:

USB-Mode = yes

做好准备工具后,按以下步骤连接 PC 和开发板:

1. 将开发板上的 S2 开关切换到 SD 卡模式
2. 上电开机,开发板将进入 USB 下载模式, LCD 上会显示“ USB Mode: Waiting...”
3. 用 USB 线连接电脑与开发板
4. 连接成功, LCD 上会显示"USB Mode: Connected"

至此,你可以使用 MiniTools 烧写系统了。


SD卡脱机烧写nand

1.使用 SD-Flasher 工具烧写 Superboot 到 SD 卡

2.将如下文件拷入SD卡

images\Superboot4412.bin                                Bootloaderimages\Linux\zImage                                     Linux Kernel 3.5images\Linux\ramdisk-u.img                              Linux 根分区映象Images\Linux\rootfs_qtopia_qt4.img                      Linux 系统分区映象images\FriendlyARM.ini                                  系统烧写配置文件


3.修改配置文件images\FriendlyARM.ini,内容如下

#This line cannot be removed. by FriendlyARM(www.arm9.net)CheckOneButton=NoAction = InstallOS = LinuxLowFormat = NoVerifyNandWrite = NoLCD-Mode = NoCheckCRC32=NoStatusType = Beeper | LED################### Linux ####################Linux-BootLoader = Superboot4412.binLinux-Kernel = Linux/zImageLinux-CommandLine = root=/dev/mmcblk0p1 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2Linux-RamDisk = Linux/ramdisk-u.imgLinux-RootFs-InstallImage = Linux/rootfs_qtopia_qt4.img

4.切换至nand启动,开机自动烧写

1 0
原创粉丝点击