之前,跟着朱有鹏大神,一起学习物联网。记录下了一些笔记。现在将这些笔记,整理发到博客。供大家学习参考。大神,用的开发板,是九鼎的x210-v3开发板,因此我也是使用的这个开发板。如果大家想学习物联网的话,可以购买朱有鹏大神的视频,跟着学习。
第一章 九鼎开发板x210-v3介绍
1、开发板信息
CPU: 三星S5PV210,基于ARM cortex-A8
内存:512M DDR2
FLASH: 4GB INAND
LCD屏:7寸,带触摸
电源: 9V1.5A供电适配器
2、交叉编译器
arm-2009q3.tar.bz2:三星官方的编译器,推荐使用该编译器。
3、开关机
电源开关使用软按键,长按电源开关键才开启电源。使用电源芯片对电源进行管理。
复位键用来给系统关机。
4、安装USB驱动
驱动在A盘\tools\USB驱动\x210_android_driver
5、Fastboot
Fastboot命令,提供了对开发板刷机功能。
5.1 命令
fastboot devices 查看当前连接的设备
fastboot flash xxx(分区) xxx(文件) 对指定分区烧录文件
fastboot reboot 用来重启设备
5.2 分区
fastboot提供了如下的7个分区:bootloader,kernel,ramdisk,config,system,cache,userdata。通过fastboot命令,可以查看各个分区以及分区起始地址和长度。
使用fastboot烧录android4.0.4镜像
fastboot flash bootloader android4.0.4/uboot.bin 将uboot烧录到bootloader分区
fastboot flash kernel android4.0.4/zImage-android 将kernel烧录到kernel分区
fastboot flash system android40.4/x210.img 将文件系统烧录到system分区
6、DNW刷机
以下是DNW刷机的步骤:
1) 开发板置于USB启动
2) 长按电源键不放,使用dnw下载x210_usb.bin。下载地址是0xd0020010,这部分代码是负责初始化dram。
3) 使用dnw下载uboot.bin。下载地址是0x23e00000,下载完后,即可松开电源键。此时uboot就在dram中运行了。
4) 使用fdisk -c 0 进行重新分区
5) 使用fastboot进行刷机
DNW刷机下,使用的是串口0。
7、破坏系统
当需要进行裸机编程时,需要将inand中自带的uboot给刷掉。就需要破坏系统。
进入到开发板的linux系统中。执行以下的命令:
busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 count=1 conv=sync
sync
如果是qt系统,执行以下的命令:
busybox dd if=/dev/zero of=/dev/mmcblk0 bs=512 seek=1 count=1 conv=sync
sync
8、linux下刷SD卡uboot
以下是在PC的linux环境下,将uboot刷到SD卡的步骤:
1) 将window下的VMware USB Arbitration Service服务开启(参考http://blog.163.com/solylee@1...)
2) 在虚拟机下,将SD卡设备连接到虚拟机
3) 将uboot_sd_fusing文件夹拷贝到linux下
4) 使用ls /dev/sd* 查看SD卡的设备名,一般是sdb
5) 执行 ./ nand_fusing.sh SD卡设备名,对SD卡进行刷uboot
9、在android2.0中不能使用fastboot
要先使用fdisk -c 0进行重新分区,就可以使用fastboot了
10、FLASH存储器
NANDFLASH分为SLC和MLC。
SLC:容量小,价格高,不易产生坏块,可以不用ECC校验
MLC:容量大,价格低,易产生坏块,但是要ECC校验。
eMMC(embeded MMC)为MMC协会所订立的、主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。
下图是NAND和eMMC的区别。对于NAND,处理器通过NAND接口对NAND进行操作,而对于eMMC,处理器通过标准接口对NAND控制器进行操作,不直接对NAND进行操作。
eMMC和SD的接口是一样的。
iNand 是sandisk公司出产的eMMC
Movinand 是三星公司出产的eMMC
Onenand 是三星公司出产的一种nand。有两种类型,muxed和demuxed。
对于muxed型,地址引脚和数据引脚结合在一起,而demuxed型芯片这两个引脚是分开的。当关注的是减少引脚数时,选择muxed OneNAND可能好一些。另外,muxed OneNAND只工作在1.8V,demuxed的密度较低,不到1 Gbit,demuxed有1.8V 和3.3V两种选择。如果muxed或demuxed器件的密度超过1 Gbit,则只能选择1.8V的工作电压。
11、SD/MMC通道接口
S5PV210支持4个SD/MMC通道,通道0和通道2依次用作启动通道使用。SD/MMC通道0用于连接板载MMC。外部启动时要使用SD/MMC通道2。
以下是SD/MMC的地址空间。
从芯片的存储地址分布,看出SD/MMC是属于SFRS区域的。
12、RAM
SRAM : 静态内存,容量小,价格高,访问快,不需要软件初始化直接上电就能使用。
DRAM : 动态内存,容量大,价格低,访问慢,上电后不能直接使用,需要软件初始化后才可以使用。
13、PC与嵌入式系统区别
PC机 : 很小容量的BIOS(norflash) + 很大容量的硬盘(类似于NANDFLASH) + 大容量的DRAM
一般的单片机 : 很小容量的NORFLASH + 很小容量的SRAM
嵌入式系统 : 因为NORFLASH很贵,所以现在很多嵌入式系统不用NORFLASH,一般用外接的大容量NAND + 外接的大容量DRAM + SOC内置SRAM
14、uboot命令下擦除inand
使用mw命令和movi命令的组合。
mw 0x30000000 0x0 0x100000, 将内存地址0x30000000开始的0x1000000大小擦除成0。
movi write u-boot 0x30000000 把uboot分区的内容用内存地址0x30000000开始的数据擦除
15、通过usb下载,程序超过16KB怎么办
通过USB下载最多也只能下载96KB大小的bin,如果bin大于96KB肯定SRAM放不下会出错。
如果用SD卡驱动,那么mkv210_image.c决定了bin文件最大不能超过16kb。
两种解决办法:
第一: 在USB下载时,先下载一个x210_usb.bin,然后再将裸机程序链接到0x23e00000,然后再修改dnw中下载地址,将裸机代码下载到0x23e00000运行。(这个时候不需要重定位了。因为程序已经在DRAM中运行了)
第二:在SD卡启动时,将整个裸机工程分为2部分,第一部分大小16KB以内,第二部分放剩下的(方在SD卡的后面的某个扇区开始的位置,比如放在第50个扇区开始的位置),然后再裸机代码中进行重定位(SD卡中重定位)。
系列其他篇
原文首发于骏的世界博客
作者:卢骏.
更多Arm技术相关的文章请关注Arm技术博客极术专栏,每日更新。