eMMC是embedded Multi Media Card的简称,即嵌入式多媒体卡, 是一种闪存卡的标准。主要针对手机或平板电脑等产品的内嵌式存储器标准规格.采用统一的MMC标准接口, 把高密度NAND Flash以及MMC Controller封装在一颗BGA芯片中。
在此模式下,芯片会执行内部的 boot ROM 代码,这段 boot ROM 代码会进行硬件初始化(一部分外设),然后从 boot 设备(就是存放代码的设备、比如 SD/EMMC、NAND)中将代码拷贝出来复制到指定的 RAM 中。
通过 USB 或者 UART 将代码下载到板子上的外置存储设备中,向开发板上的 SD/EMMC、NAND 等存储设备下载代码。
一般都是类似于stm32的管脚设置的方式。模式里面的不同设备的选择也是通过管脚设置。
①、Image vector table,简称 IVT,IVT 里面包含了一系列的地址信息,这些地址信息在ROM 中按照固定的地址存放着。
②、Boot data,启动数据,包含了镜像要拷贝到哪个地址,拷贝的大小是多少等等。
③、Device configuration data,简称 DCD,设备配置信息,重点是 DDR3 的初始化配置。
④、用户代码可执行文件,比如 led.bin。在A7中内部 Boot
ROM 会将 load.imx 拷贝到 DDR 中,用户代码是要一定要从 0X87800000 这个地方开始的,因为链接地址为 0X87800000,load.imx 在用户代码前面又有 3KByte 的 IVT+Boot Data+DCD 数据,因此 load.imx 在 DDR 中的起始地址就是 0X87800000-3072=0X877FF400。
对于A8而言,就是前16个字节,保存一个校验和。程序210.bin 最终就是被拷贝到IRAM 的起始地址0xD0020000处,因为bin文件中包含了16byte的头部,代码的真实起始地址是0xD0020010,所以上述启动序列的第七步是跳转到IRAM的0xD0020010地址上继续运行
CRT上的Zmode方式就不说了,就是麻烦点,能否用常用的moba实现呢?当前还不可以
查了一下,moba是不支持zmode的,只支持ssh连接后的ftp上传及下载。但也扩展了下原来还有sz和rz命令,这样方便的上传及下载命令。
sz和rz命令的原理其实是来源于下面四个文件传输协议:
XModem是一种发送等待(send-and-wait)协议, 具有流量控制功能。数据长度为128字节。
YModem是XModem的改进版。它可以传送多个文件,数据长度可达1K字节且支持16位CRC校验。
ZModem不但具有纠错功能,而且是一种流式协议。它不再以收方发ACK引导。
KERMIT类似于XModem,但它对XModem进行了改进,可以传输多个文件,错误检测方式明显改善。同时KERMIT还提供压缩功能。
嵌入式linux作为服务器
sz 表示服务器发文件到PC
rz表示要接收文件,来自PC的文件
所以服务器端要安装上sz与rz两条命令包:
wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
tar zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20
./configure && make && make install
# 创建软链接,这样就可以直接使用rz和sz了
cd /usr/bin
ln -s /usr/local/bin/lrz rz
ln -s /usr/local/bin/lsz sz
使用crt时,可以通过 session opetion,设置好zmode默认的上传及下载目录。
此种方式,需要将arm板当作服务器,不太现实,资源有限。
权限问题,执行chmod u+x hello,即可。
原理:首先执行 ls --all,可以看到文件的所有者及权限为:rw-r-r
就是没有x,执行权限,而u:表示所有者,所以用chmod更改权限后变为rwxr-r解决。