目前用的是友善的开发板tiny210v2,看着各式各样的资料却无从下手,其实第一步最想理清楚的就是程序的烧写。友善官方的用户手册提供了两种烧写方式,一个是卡刷,一个是USB线刷。这两种方式都是用友善自家做的工具,做开发的人对这种封装过的工具相信都会有些许的排斥。


前阵子用卡刷的方式试了下,友善只给了一个SD-FLASHER的工具,利用它能够将bin文件写入SD卡,但工具不大好用,最终板子还是无法从SD卡启动。后来在友善论坛找到了网友冰柠绿茶的CM移植帖子,找到了网友liukun的CSDN博客,大致理清楚了另外一种通用的程序烧写的思路。


利用分区工具诸如diskgenius等对SD卡进行分区,第一个区放bootloader(我分配来16M,一般bin才几百k),第二个区格式化成fat32把uImage放在其根目录下,第三个区做为SD卡,第四个区格式化成ext4格式存放Android根文件系统。

#1.bootlloader

其中第一分区boot用的通用的uboot,利用linux系统的自带命令将bin文件写入SD卡。。

编译uboot就不说了。

要把uboot编译好的镜像烧到SD卡,这里涉及到两个命令。一个是cat,将SD卡通过读卡器接上电脑(或直接插入笔记本卡槽),通过"cat /proc/partitions"找出SD卡对应的设备节点;另一个是dd,$sudo dd iflag=dsync oflag=dsync if=tiny210-uboot.bin of=/dev/sdb seek=1,of(output file)后面带的设备节点就是cat命令查到的,这里的例子是sdb,至于后头的seek=1,相关资料说三星官方说第一个块必须保留,只能跳过第一块。

烧img时android设备 安卓烧写工具_s5pv210

另外给内核的启动参数:
bootargs=console=ttySAC0,115200 root=/dev/mmcblk0p4 rw rootfstype=ext4 rootdelay=1 init=/init lcd=S70 ctp=3                                                     bootcmd=fatload mmc 0:2 0x20000000 uimage ; bootm 0x20000000
bootargs中root=/dev/mmcblk0p4就是前面为什么Android根文件系统放第4分区的原因。bootcmd中mmc 0:2这就是内核放第二区的原因。


/* 余下的几步是转载网友柠檬绿茶的 */

#2.kernel
代码:https://github.com/5victor/linux-tiny210v2.git
那个电容屏和alsa-soc的驱动已经变成源码放在内核里了。我暂时需要这两个模块,所以就只弄了这两个模块的源代码了。克隆下来代码,进去。
1.cp mini210-tvp5150_android_defconfig .config
2.把u-boot-tiny210v2编译出来的tools/mkimage放在/usr/local/bin
3.make ARCH=arm CROSS_COMPILE=(自已看着办)  uImage
把SD卡第二分区格式化成fat32,把uImage放在其根目录下。

#3.Android
先把Android或者cm源代码下下来。然后,我移植的。把代码克隆下来后移动到device/samsung/tiny210。

cm的在https://github.com/5victor/cm_device_samsung_tiny210

Android官方的在https://github.com/5victor/device_samsung_tiny210

1.source build/envsetup.sh
2.lunch 选你看到有tiny210字眼的项目
3.make
4.sd卡第4分区格式化成ext4格式
5.cp -a out/target/product/tiny210/root/* /sd卡根目录 注意那个*号。
6.cp -a out/target/product/tiny210/system /sd卡根目录
7.修改SD卡下*.rc *.prop的权限为644。sysem/build.prop为644。
8.修改init.rc文件


至此,一切就完毕了。