cortex-a8裸机系列:第一章 九鼎开发板介绍
2赞之前,跟着朱有鹏大神,一起学习物联网。记录下了一些笔记。现在将这些笔记,整理发到博客。供大家参考。 大神,用的开发板,是九鼎的x210-v3开发板,因此我也是使用的这个开发板。如果大家想学习物联网的话,可以购买朱有鹏大神的视频,跟着学习。
1、 开发板信息
CPU: 三星S5PV210,基于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 devices 查看当前连接的设备
fastboot flash xxx(分区) xxx(文件) 烧录
fastboot reboot 用来重启系统
分区:
bootloader
kernel
ramdisk
config
system
cache
userdata
使用fastboot烧录android4.0.4镜像
fastboot flash bootloader android4.0.4/uboot.bin 烧uboot
fastboot flash kernel android4.0.4/zImage-android 烧linux kernel
fastboot flash system android40.4/x210.img 烧android rom
6、 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、 破坏系统
进入到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
1、 将window下的VMware USB Arbitration Service服务开启(参考http://blog.163.com/solylee@126/blog/static/171823157201138113230489/)
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:容量小,价格高,不易产生坏块,可以不用ECC校验
MLC:容量大,价格低,易产生坏块,但是要ECC校验。
eMMC(embeded MMC)为MMC协会所订立的、主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。这些特点对于希望通过缩小光刻尺寸和降低成本的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机 : 很小容量的BIOS(norflash) + 很大容量的硬盘(类似于NANDFLASH) + 大容量的DRAM
一般的单片机 : 很小容量的NORFLASH + 很小容量的SRAM
嵌入式系统 : 因为NORFLASH很贵,所以现在很多嵌入式系统不用NORFLASH,一般用外接的大容量NAND + 外接的大容量DRAM + SOC内置SRAM
14、uboot命令下擦除inand
movi 命令
movi write u-boot 0x30000000
把内存地址中0x30000000中的数据写入到inand中的uboot区域
另外一种方法,
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卡中重定位)。