【教程】如何使用source insight编译Linux裸机代码

本帖最后由 勤奋的小青蛙 于 2018-1-24 12:56 编辑 问:老师好,我是初学者,在学习裸机程序时,对开发流程很困惑。我的步骤是: 1.在Windows下用source insight编写修改代码 2.使用FTP工具将修改后的代码上传到虚拟机中的Ubuntu 3.到终端输入编译命令 4.使用FTP工具将裸机程序拷贝到Windows 5.使用OpenJtag进行烧写测试。 有没有一种方法,在source insight中就可以完成这些步骤呢?我以前在Visual Studio中写完程序只需要点击几个按钮就可以了,嵌入式开发能否也像开发PC程序一样简单些? 答:办法是有的。 教程开始 [img=1,1]http://www.100ask.org/bbs/?fromuid=5478[/img] 使用到的软件: source insight 4.0 用于编辑代码 plink 用来给Ubuntu发送编译指令 pscp 用来拷贝编译好的固件到Windows oflash 用来烧写裸机程序到开发板 Ubuntu16.04 用来编译代码 1.下载 plink pscp 官网:[url=https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html]https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html[/url] 2.将plink、pscp、oflash 拷贝到C:\windows\system32文件夹下(或者自定义一个文件夹,添加环境变量) 3.打开命令提示符,查看上面三个软件是否可用。下图所示就是配置正确了

1.png

2.png

3.png

4.将裸机代码放在Ubuntu中,source insight可以通过samba获取到代码的路径,具体可参考: [url=http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=20234]http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=20234[/url] 5.使用source insight创建工程,可以直接编辑ubuntu中的代码。这种方式简单高效,不必像视频中那样拷来拷去。需要注意的地方只有一点,如下图:

4.png

6.工程创建完之后,可以看一下代码

5.png

7.source insight 4.0 默认文件编码方式是utf-8,而光盘提供的代码是gbk,所以会出现中文乱码。可通过下图改成 GB2312,重新打开文件就可以了。

7.png

如图:

8.png

8.将source insight提供的编译工具条弄出来 View-->Toolbars-->Build Toolbar 勾选上,在图标栏就可看到。我们可以自定义每个按钮的动作来实现自动编译烧写。

9.png

9.先设置第一个按钮,让它实现编译的功能。 Tools-->Custom Commands.. -->Build Project

10.png

主要设置的就是Run输入框的参数(如果你的plink.exe在C:\windows\system32下,那么dir留空即可,否则需要填写),如下: [code]plink.exe -l book -pw 123456 -m \\10.0.0.220\samba\hardware\leds\build.txt 10.0.0.220[/code]plink命令读取一个配置文件 \\10.0.0.220\samba\hardware\leds\build.txt ,然后将文件中的命令发送给主机10.0.0.220,使用的用户名为book,密码是:123456.其中build.txt中就是自动编译的命令。内容很简单: [code]make -C /work/hardware/leds[/code]这样设置后,当点击第一个按钮之后,Ubuntu就会收到编译命令 make -C /work/hardware/leds ,也就实现了在source insight中编译的目的。 10.第二个按钮默认的名称是 Clean Build,同样的参考编译的命令,可新建一个文件clean.txt,内容为 make -C /work/hardware/leds clean,就可实现clean的效果 11.第三个按钮默认的名称是 Compile File,但是可以让它作为拷贝的功能。

11.png

红色框内容为: [code]pscp.exe -l book -pw 123456 10.0.0.220:/work/hardware/leds/leds.bin C:\Users\frog\Downloads\[/code]就是将生成的leds.bin拷贝到Windows下的C:\Users\frog\Downloads\,这个目录可以自定义。 12.把第四个按钮定义成下载烧写的功能

12.png

使用oflash将上一步拷贝到C:\Users\frog\Downloads\下的leds.bin烧写到板子上 红色框内容为: [code]oflash.exe 1 1 0 0 0 C:\Users\frog\Downloads\leds.bin[/code]可以阅读oflash的使用方法自定义烧写信息。

13.png

以上只是针对同学提问给出的方案,其实还可以更加灵活,这里只起到一个抛砖引玉的作用,欢迎大家积极探索更加高效的开发方式。如果有,请在下方留言。
请先 登录 后评论

11 个回答

shuimu
虽然没有这样用过,但是看到有这种方法,确实在开发时非常方便,谢谢
请先 登录 后评论
勤奋的小青蛙
[quote][url=forum.php?mod=redirect&goto=findpost&pid=74648&ptid=20237]shuimu 发表于 2018-3-6 16:36[/url] 虽然没有这样用过,但是看到有这种方法,确实在开发时非常方便,谢谢[/quote] 开开眼界还是不错的
请先 登录 后评论
勤奋的小青蛙
[quote][url=forum.php?mod=redirect&goto=findpost&pid=74847&ptid=20237]我是一头猪 发表于 2018-3-12 19:17[/url] 厉害了[/quote] 开开眼界还是不错的
请先 登录 后评论
menlonhappy
学习了,开发方便
请先 登录 后评论
tlpfly218
make: Entering directory '/home/tlpfly218/workspace/jz2440/leds' arm-linux-gcc -Wall -Wstrict-prototypes -g -fomit-frame-pointer -ffreestanding -c -o crt0.o crt0.S Makefile:3: recipe for target 'all' failed make: Leaving directory '/home/tlpfly218/workspace/jz2440/leds' make: arm-linux-gcc:命令未找到 make: *** [all] Error 127
请先 登录 后评论
tlpfly218
make: Entering directory '/home/tlpfly218/workspace/jz2440/leds' arm-linux-gcc -Wall -Wstrict-prototypes -g -fomit-frame-pointer -ffreestanding -c -o crt0.o crt0.S Makefile:3: recipe for target 'all' failed make: Leaving directory '/home/tlpfly218/workspace/jz2440/leds' make: arm-linux-gcc:命令未找到 make: *** [all] Error 127
请先 登录 后评论
tlpfly218
我按照楼主的方法一直提示上面的错误,编译通不过,其他两种可以使用。搞了一个下午都没有搞好。
请先 登录 后评论
勤奋的小青蛙
[quote][url=forum.php?mod=redirect&goto=findpost&pid=77273&ptid=20237]tlpfly218 发表于 2018-6-7 15:20[/url] 我按照楼主的方法一直提示上面的错误,编译通不过,其他两种可以使用。搞了一个下午都没有搞好。[/quote] 在Linux系统中把 make: arm-linux-gcc:命令未找到 这个问题解决了就好了
请先 登录 后评论
tlpfly218
韦老师,我在linux系统使用make编译及arm-linux-gcc -v指令查编译器的版本都是可以的,还有按照您说的方法配置clean指令可以正常使用,不知道哪里出了问题?
请先 登录 后评论
勤奋的小青蛙
[quote][url=forum.php?mod=redirect&goto=findpost&pid=77277&ptid=20237]tlpfly218 发表于 2018-6-7 17:16[/url] 韦老师,我在linux系统使用make编译及arm-linux-gcc -v指令查编译器的版本都是可以的,还有按照您说的方法 ...[/quote] 你打开Linux终端,直接执行 make -C /home/tlpfly218/workspace/jz2440/leds 看看,是不是编译器找不到?
请先 登录 后评论
  • 0 关注
  • 0 收藏,4532 浏览
  • 勤奋的小青蛙 提出于 2018-01-24 12:55

相似问题