第一章——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=705E4412_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"
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 系统烧写配置文件
#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启动,开机自动烧写
- 第一章——2440及4412烧写代码
- 代码大全——第一章
- 自己来写RPC框架—第一章
- 第一章 SpringMVC之 基础知识及代码
- 第一章 SpringMVC之 基础知识及代码
- 读书笔记——自己动手写网络爬虫_第一章(1)
- 读书笔记——自己动手写网络爬虫_第一章(2)
- 如何写好求职简历——招聘心得第一章
- 代码整洁之道精华——第一章 整洁代码
- 牛腩—漂亮写代码
- 【代码之美】第一章——正则表达式匹配器
- 《第一行代码》 随手笔记——第一章
- “第二行代码”知识总结——第一章 简要概述
- 【Android】《第一行代码—Android》第一章总结
- 快学scala 第一章 读书笔记及习题答案代码
- 《一步一步写嵌入式操作系统——ARM编程方法与实践》(第一章、第二章)读书笔记
- 从零开始写javaweb框架(第一章)—— 所遇到的问题 与 解决方法
- Java类——写代码好像写小说
- [Java基础] 类型转换
- 判断一个char是否是由字母数字组成
- simhash算法
- java人脸识别,非常准确哦
- Android中 任务栈&启动模式
- 第一章——2440及4412烧写代码
- linux 查找目录或文件
- POJ 1848树形DP
- 设计模式之(Facade)外观模式
- linux 查找目录或文件
- 日语学习之沪江N4基础 20141122
- 信号与槽 实验1
- 我现在还不想和任何人交往。”知道真相的我眼泪流下来[泪]
- 关于chromeCast介绍