嵌入式系统任务动态加载原理和过程

本文介绍了一种用于嵌入式系统的程序动态加载技术。该技术通过使用gcc和ld等工具将源代码编译链接成可执行文件,并进一步转换为特定的加载协议文件。最终,通过串口等途径将此文件传输至目标系统,实现实时动态加载及运行。
  1. 每个.c分别并行的用 gcc -c 指令编译成每个.o(该过程编译器不会分析源文件之间的关系)(gcc中多包含头文件文件夹,不会出错。但是如果现在编译的是有问题的.c文件,就出错了)
  2. 用ld -r指令将他们合并为一个.o
  3. 然后 nm -u 指令找出该.o中未定义的符号
  4.  nm -s 指令重定义这些符号地址,从别的已编译的a.out获得
  5. 用 gcc -o 指令生成最后的out文件
  6. 从这个.out文件中提取出 text段data段bss段(这些是程序运行的实体,当然还有其它一些信息段段,但是我们不需要了),再添加上一些自己定义的协议头什么的,就形成了我们自己的加载协议文件了。

上述得到的协议文件通过串口等方式,传输到已有下位机系统中,这个系统按照协议解析格式(在线的过程),按照text段data段bss段起始地址把这些代码段搬运到对应内存位置,即可运行啦。

这个自己可以写个IDE进行实现,就是一个动态加载工具了,还是比较简单的。 这个动态加载技术在很多嵌入式实时操作系统中比较常见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值