如何把51程序移植到arm?

如何把51的C语言程序移植到LM3SXXXX的arm7中,arm中提供了很多外设驱动程序(API函数),可是不太会用。本人新手希望能有人解惑,谢谢!... 如何把51的C语言程序移植到LM3SXXXX 的arm7中,arm中提供了很多外设驱动程序(API函数),可是不太会用。本人新手希望能有人解惑,谢谢! 展开
 我来答
为午夜阳光
高粉答主

2016-01-21 · 醉心答题,欢迎关注
知道大有可为答主
回答量:1.2万
采纳率:90%
帮助的人:996万
展开全部
  一、准备
  busybox 1.14.1
  qt-embedded-linux-opensource-src-4.5.1
  tslib 1.4
  gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)
  构建一个新的根文件系统目录,路径为
  /root/rootfs

  二、具体步骤:
  
  1、编译安装busybox
  在官网下载最新版。可以参考如下几处要修改的地方:
  Busybox Settings ---> Build Options ---> (arm-linux-)Cross Compiler prefix
  Busybox Settings ---> Installation Options --->[]Dont't use /usr
  Busybox Settings ---> Installation Options --->(/root/rootfs) BusyBox installation prefix
  Busybox Settings --->Busybox Library Tuning --->[*] Fancy Shell prompts
  输入如下命令,编译并安装。
  # make;make install

  2、编译安装tslib
  # ./autogen.sh
  # ./configure -prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/ -host=arm-linux ac_cv_func_malloc_0_nonnull=yes
  # make;make install

  安装目录指明为 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/
  主要是为了在编译QTE时,不用指定tslib的头文件和库文件,方便以后程序开发。

  注意:在做这一步前,需要做一个目录链接
  在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/目录下
  # ln -s ../../usr/include ./

  3、编译安装QTE
  1)、最基本的配置
  # ./configure -prefix /usr -embedded arm -xplatform qws/linux-arm-g++ -depths 16 -qt-mouse-tslib
  -prefix /usr 使用这个配置,编译后的QTE库文件即可放在目标文件系统的/usr/lib下,而不是默认/usr/local/Trolltech/QtEmbedded-4.5.1 这个很深的目录
  2)、编译
  # make
  # cp lib/* /root/rootfs/usr/lib -rd 将QTE库文件拷贝到根文件系统的目录
  # cp plugins /root/rootfs/usr -rd 将QTE插件目录拷贝到根文件系统的目录

  4、根文件系统的设置
  1)、这时/root/rootfs/usr下应该有 bin etc include lib sbin目录
  tslib生成的etc目录,包含一个tslib的配置文件 nf,编辑此文件,去掉module_raw input前的注释
  # mv etc ../ 移动到rootfs的根目录
  
  2)、进行一次清理操作
  #arm-linux-strip lib/*.so
  #arm-linux-strip usr/lib/*.so

  3)、编辑etc/profile,添加以下内容
  export QWS_MOUSE_PROTO=Tslib:/dev/event0
  export TSLIB_CONSOLEDEVICE=none
  export TSLIB_FBDEVICE=/dev/fb0
  export TSLIB_TSDEVICE=/dev/event0
  export TSLIB_CALIBFILE=/etc/pointercal
  export TSLIB_CONFFILE=/etc/nf
  export TSLIB_PLUGINDIR=/usr/lib/ts

  最后,通过mkyaffs2image 制作镜像,烧写镜像,启动ts_calibrate校验触屏即可。
小娘养殖专业户
2015-11-21 · TA获得超过2522个赞
知道大有可为答主
回答量:2738
采纳率:0%
帮助的人:922万
展开全部
这个主要是要注意8位机代码移植到32位机的问题,如果你51的C写得很规范移植会好点,如果写的不规范麻烦会大点,比如unsigned
int 这个类型在8位机和32位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草原寒光
2011-02-22 · 超过25用户采纳过TA的回答
知道答主
回答量:123
采纳率:0%
帮助的人:65.8万
展开全部
这个主要是要注意8位机代码移植到32位机的问题,如果你51的C写得很规范移植会好点,如果写的不规范麻烦会大点,比如unsigned int 这个类型在8位机和32位编译出来的效果就是不一样的。还有就是ARM芯片会有字节对齐的问题,如果51的C里面用到了结构体,那么字节对齐的问题会出现在sizeof(结构体名)。这个函数因为字节对齐问题,可能会算出的结构体字节大小和你想的不一样。 其他好像也没有什么需要注意的了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
速达_济南天禹
2016-01-06 · TA获得超过3.1万个赞
知道大有可为答主
回答量:7174
采纳率:37%
帮助的人:960万
展开全部
1)学习 Linux系统安装、常用命令、应用程序安装。
2) 学习 Linux 下的 C 编程、这本书必学《UNIX 环境高级编程》、《UNIX 网络编程》,Rechard Stevens 写的,C 高手大都学习过《C 和指针》、《C 缺陷与陷阱》、《高质量C/C++编程指南》、《C 专家编程》、《The C programming Language》
3)程序员大都要学:数据结构,嵌入式程序员数据结构必学。
4)底层开发人员大都要学:微机原理、计算机体系结构,嵌入式开发人员必学。
5)单片机可以让一个从事软件开发的人了解和如何操作硬件,有必要学。
6)ARM 体系结构,其中有汇编。
7)数字电路有必要学习,不然在做底层开发时真的会不知道怎么看原理图,起码也得懂与或门。
8)ARM + Linux 应用程序开发。(前提是要有开发板)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式