嵌入式linux(内核为linux 2.6.30.4)开发中遇到的一些问题解决方法

2019-07-13 08:58发布

  1.设置环境变量
gedit /etc/profile
再在文本中添加
export PATH="$PATH:路径名"
保存后到shell执行source /etc/profile使信设置的环境路径生效
2.静态编译格式
gcc/arm-linux-gcc -static -o 输出文件名    原文件名 3.如何设置主机与虚拟机操作系统的共享文件
a.首先在虚拟机工具栏上电机VM-》setting-》opitions-》shared folder-》alwas enable
b.在虚拟机中安装VM TOOls,将vm tools中的压缩文件解压,进入其解压目录中,以超级用户登录,运行vmware-install.pl
c.运行结束后,按照a的操作进入页面,点击右边的ADD按钮,然后按照操作添加共享文件 4.配置内核时出现invalid option `abi=aapcs-linux'错误的处理方法
处理方法1:用的编译器比较旧,用的可能是arm-linux-gcc 3.4.1版本的,用的是OABI的,而配置内核时又选择了EABI的,修改内核配置,
到内核源代码的目录下运行make menuconfig  进入配置的图形界面   找到Kernel Features---》选项  进入  找到Use the ARM  EABIto  compile the kernel不选EABI,编译器再编即可通过
处理方法2:换用arm-linux-gcc 4.3.3的交叉编译器编译 5.关于如何编译嵌入式的驱动程序使其可以动态加载到GT2440开发板上(针对S3C2440的芯片)
      这里要注意几个问题,我们编译的驱动程序是基于开发板上的操作系统的,直接用arm-linux-gcc进行编译可能会出错,因为虚拟机,所以我们在编译驱动程序时,要将驱动程序放入嵌入式操作系统内核如linux-2.6.30.4目录下的drivers子目录下的char目录下(如果编译的是字符设备的驱动程序则放在此目录下,注意此时嵌入式操作系统必须是交叉编译过的),然后修改char目录下的kconfig文件,在其中加入以下的代码
    config GT2440_GPIO_MODULE
 tristate "GT2440 GPIO Module sample"
 depends on ARCH_S3C2440
 default m if ARCH_S3C2440
 help
   GT2440 GPIO module sample.(这个help的内容就是对这个驱动程序的功能的描述可以自己任意的发挥)
   改完后,再在makefile文件中加入以下的代码
   obj-$(CONFIG_GT2440_GPIO_MODULE)  += gpio.o
   然后到linux-2.6.30.4的原目录下运行make menuconfig 进入图形配置界面 ,找到Device drivers-》并进入 找到  character devices-》并进入
   就会找到我们加进去的GT2440 GPIO Module sample 了,选到它按空格就可以选择编译模式,可以选择编译进内核,此时< >里显示*,也可一选择编译模块化的动态加载的编译模式,此时 < > 里显示的是M ,选择SELECT 按enter,再退出到linux-2.6.30.4目录下,运行make modules即可在char 目录下产生gpio.ko
   ,然后将gpio.ko下载到开发板上,放到/home/plg目录下,再在终端运行 insmod gpio.ko就可以将起动态加载到开发板上,用rmmod gpio.ko就可以卸载gpio.ko了