请帮我解释下这段s3c2410 嵌入式开发中的代码,是将文件从flash中复制到ram中的程序 #include "def.h" #in

请帮我解释下这段s3c2410 嵌入式开发中的代码,是将文件从flash中复制到ram中的程序 #include "def.h" #in,第1张

#include "def.h"

#include "2410addr.h"

#include "2410lib.h"

#define ARM_ADDR 0x30000000 /拍乎*定义一个地址,应该是复位之后要跳转到的地址*/

void (*run)(void) /* 一个指针函数 */

void ARM9init(void)

void (CopeFromFlashToRM(U32 * FlashAddr.U32 *ArmAddr,U32 ul)

void copy(void)

void main(void)

{

run=(void(*)(void)) ARM_ADDR/* 从ARM_ADDR开始执行,遇到return返回继续下面的函数 */

ARM9init() /* 调用函数 */

copy()

run()

}

CopyFromFlashToRAM(U32 * pulFlashAddr,U32 *pulArmAddr,U32 ul)

/* 将长度为ul 的内容从pulFlashAddr copy 到 pulArmAddr */

{

U32 *pulSource=pulFlashAddr/* 参消贺判数1的数值传递给变量 */

U32 *pulDest=pulArmAddr

U32 i

ul/=4/* ul = ul/4,ul应该是要copy文件的长度 */

for(i=0i<uli++) /* 重复执行copy指令 */

{

*pulDest++=*pulSource++ /* 源地址的内容copy到目的地址 */

}

} /* CopyFromFlashToRAM 函数结束 */

copy(void)

{

U32 *p1

U32 *p2

p1=(U32 * )0x00200000 /* flash 地址拿改*/

p2=(U32 * )0x30000000 /* RAM 地址*/

CopyFromFlashRAM(p1,p2,0x20000)/* 将长度为0x20000 的内容从p1 copy 到 p2 */

}

1.首先,建立交叉编译环境:交叉编译是指:在PC机上编译,在目标板上执行,我PC是linux+ arm-elf-gcc编译器.扳子是ARM3000.板子上的系统是uclinux,这时一个剪裁的很小的实时嵌入式linux *** 作系统.推荐使用这个.

2.然后就是你写程序喽,不过注意可能有些库函数不能用,因为哪个编译器稍微受限一点,不是所由的c库函数都支持,不过一般开发的都有.

3.连起你的主机和团孙开发板,这个你会不?要连两个:串口(用来控制板子)和以太口(用来下载程序),我们板子上这些外设都有,你要使没有可以用其他的口代替传程序,但串口可是该有的阿!

4.在你主机上编译程序生成目标代码,建议用makefile文件来组织你的联慧敬编关系.

5.把生成代码下载到目标板执行调试.我是用的主机的NFS(网落文件)服务,下载到目标板的.

6.注:目标板是怎么控制的呢?是用串口控制的,可用minicom,设置好你要控制的串口,也应该是你连板子的那个.在命令行里敲上minicom,即进入minicom截面,开启你的板子,应该就是板子uclinux系统解压安装前或慎的画面了.然后用ifconfig eth0.....

配置ip,这个ip就是你板子的ip了,注意与主机一个网段.然后mount -t nfs 主机ip:/uclinux /板子上的一个目录,就把主机的 uclinux目录放到板子上了(这么说其实不合理,应该叫挂载). 然后找到你刚才一经编译好的哪个目标代码执行即可.

因不了解你的具体环境和配置,暂说这些,有问题可再联系:)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12380767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存