如何在Blackfin上已移植的uClinux系统中添加自己编写的程序

    被这个问题纠缠了很久,今天终于成功解决,撰文以记之。

    在网上搜了很多文章,也没有解决自己的问题,但是在有一篇文章中找到了灵感。之所以网上搜到的文章对自己没有实质性的帮助,是因为软件平台与开发环境不一样导致的,所以余以为首先应该说一些自己的开发情况。言归正传。

 

    操作系统:Win7 Ultimate

    软件linux支持环境:coLinux v0.7.8

    编译器:blackfin-toolchain-elf-gcc-4.3-2010R1-RC4

    uClinux分发包:blackfin-toolchain-2010R1-RC4.i386

    串口传输软件:超级终端

 

 

    参考了很多文档没有得到答案,最后在uClinux 分发包的README 文档中得到提示,在其Documentation文件夹下有一个帮助文件:Adding-User-Apps-HOWTO 。参照这个帮助文档最后成功实现了自定义文件的添加。

    由于使用了uImage 镜像,将其烧进板上的Flash 中。所以板子上运行的系统内核其实包含在这个镜像中。所以问题的关键在于怎样将自定义的文件添加进镜像中,也可以说,自定义的程序放到哪个文件夹下,以什么样的方式放进去,需要怎样的配置,可以将其打到uImage 中。下面就移植过程进行介绍,可以认为是Adding 文档的汉化版,具体细节请参阅该文档。这里以自己编写的hello 文件为例。原代码如下:

 

 

 

    将这个文件保存为hello.c 。在uClinux 分发包目录下的user 文件夹新建一个hello 文件夹,将hello.c 放到hello 文件夹下。

 

特别注意,这些文件中,每一行的对齐一定要用Tab键,用空格键可能会编译不通过!

 

修改user/Makefile

dir_$(CONFIG_USER_HELLO_HELLO)            += hello

    

修改user/Kconfig

config USER_HELLO_HELLO

    bool "hello"

    help

      This program can display a hello uClinux message.

 

新建/user/hello/Makefile

EXEC = hello

OBJS = hello.o

 

all: $(EXEC)

 

$(EXEC): $(OBJS)

      $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

 

romfs:

      $(ROMFSINST)    /bin/$(EXEC)

   clean:

      -rm -f $(EXEC) *.elf *.gdb *.o

 

    在uClinux 文件夹下,运行make menuconfig ,选择BF561 EZ-KIT Lite 。保存退出,提示新增加了hello ,输入y ,然后make 生成uImage 镜像。将镜像烧入Flash 中,重启开发板,可以在板上的bin 文件夹下看到有hello 文件,运行hello ,可以看到Hello uClinux 的信息。

 

 

 

 

    另外之前遇到的一个问题得到解决。在colinux 中对hello.c 编译生成了hello 程序,但是这个程序传输到windows 能访问的目录下。运行超级终端,在板上的uClinux 系统下使用lrz 命令,希望将这个hello 文件传输到系统中运行,但是每次都提示“未找到匹配的文件”。一开始意识到可能的原因是权限问题或者linux 文件传输到windows 下有信息丢失。对于第一个问题,将超级终端以管理员权限运行,无果,错误依旧。对于第二个问题,希望能找到一个方法从PC 上的linux 下直接传输到板上系统。

    但是后来在winhex 下查看这个hello 文件时,发现文件属性是SA ,怀疑是否是这个系统属性的关系。于是在CMD 下使用attrib –s 命令下去掉该文件的系统属性,结果传输成功。 于是成功将hello 文件传输到SDRAM 中。这时候直接运行该文件会提示没有权限访问,于是使用chmod 777 hello 更改权限。

 

关于chmod 命令的解释:

读、写、运行三项权限用数字表示,r=4,w=2,x=1 。如果是rw 权限就是4+2=6777 就意味着当前登录用户、当前登录用户所在组、其他人都有最高权限。

 

    然后运行hello 程序,得到结果:

 

参考文献:

1. 帮助文档 /blackfin-linux-dist/Documentation/Adding-User-Apps-HOWTO

2. chmod 777 修改权限

3. 向uClinux中添加应用程序及自动运行

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值