现在的位置: 首页 > 操作系统 > 正文

linux+arm路线的学习

2018年09月07日 操作系统 ⁄ 共 1422字 ⁄ 字号 评论关闭

重新走嵌入式linux+arm路线,有四个好朋友将会给我提供帮助,希望我能走得更快更好,谢谢他们!

今天 第一天在csdn上写博客,来记录一下这两天来的一些小经历。拿培训的时候给的现成的uboot,uImage, 文件系统,交叉工具链,迅速搭建好开发环境。运行了一个播放MP3的小程序,把耳塞插到开发板的音频接口,悠闲地听了两首自己放进去的歌曲。哈哈,我的嵌入式学习开始啦!从硬盘中找出一个以前培训的时候老师给的内核源码,编译的时候居然通不过,打印出好多错误信息。其中一个很关键的信息:***
*** You have not yet configured your kernel!
*** (missing kernel .config file)
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***

 google搜索了一下,发现是没有配置内核。怎么配置呢,错误的提示信息里面还有说make menuconfig或者make oldconfig等信息,然后我make menuconfig后,生成了.config文件。可惜的是显示

i386的信息。应该是没有设置目标平台。网上搜索了一下,修改一下Makefile的内容就可以编译,不过这样的话,可能你配置了一些不存在的驱动,这样的话,最终还是不能编译成功的。

ARCH  ?=  arm

CROSS_COMPILE ?= arm-linux-gnu-

编译的时候必须加sudo才行,可是提示找不到arm-linux-gnu- 命令。切换到root用户也提示找不到这个命令。后来发现是root用户下的.bashrc文件没有设置交叉工具链的位置,所以在root用户下,按Tab键值也不会补全arm-linux-gnu-gcc命令。改成绝对路径或者修改root用户下的.bashrc文件。添加交叉工具链的绝对路径。具体请到网上查阅交叉工具链的环境的设置。

如果你不知道怎么配置内核,那么使用linux系统默认的配置。cp arch/arm/configs/s3c2410_defconfig  KernelDir/.config   (KernelDir 是你的内核的路径, 这个文件内核给我们提供的默认配置)

以前写有一些简单的helloworld等小程序,我加载这些模块时,居然加载不成功,出现错误信息:hello_world: version magic '2.6.22.6 mod_unload ARMv4 ' should be '2.6.26.5-svn10-dirty2 mod_unload ARMv4 '。查看系统加载的时候内核的信息,发现内核的版本居然是2.6.26.5-svn10-dirty2,而我编译helloworld的时候,用的是2.6.22.6的源码。果断,我重新编译了内核源码,生成一个2.6.22.6的镜像文件uImage。我的用的是tftp下载内核到sdram,通过nfs挂载文件系统。板子跑起来的时候,挂载文件系统失败。查看串口打印的信息,发现网卡驱动没装。板子上用的是CS8900a的网卡,故只需将这个网卡的驱动加载进去即可。加载cs8900a的驱动,网上有教程。

添加了cs8900a这个网卡驱动后,我的环境就算是弄好了。可以编写一些小驱动程序来玩了。

欢迎嵌入式linux+arm路线的朋友加入qq群:126608317

抱歉!评论已关闭.