Tiny6410驱动开发心得(一)
2017-11-08 15:57
344 查看
工具:
1.光盘A中linux-2.6.38-20150708.tgz
2.交叉编译器arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz
3.tiny6410开发板(自带的系统)
步骤:
一、解压内核
二、修改Makefile
改成:
三、进入解压出来的linux-2.6.39目录,拷贝arch/arm/configs/s3c6400_defconfig到当前目录并重命名为.config
四、基本配置
执行make menuconfig
1、设置System Type
首先:设置System Type->ARM System type为Samsung S3C64XX
其次:选择System MMU类型为MINI6410
只选上MINI6410其它的不选。
2、支持进程中通信
3、关掉Touchscreen触摸屏的相关驱动模块,应该在make zImage中总是出现相关变量未定义的问题。关掉也不影响驱动的开发。
4、解决VERMAGIC不一致的问题
首先:修改主Makefile文件的头四行为
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 38
EXTRAVERSION =-FriendlyARM
其次:修改目录下源码中的include/linux/vermagic.h中的VERMAGIC_STRING如下:
#define VERMAGIC_STRING \
UTS_RELEASE " preempt mod_unload ARMv6 "
/*MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
MODULE_ARCH_VERMAGIC*/
5、解决make zImage 时no machine record defined 错误
将arch/arm/kernel/vmlinux.lds的最后两行(如下)给注释起来
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")
网上有说这样做没有从根本上解决问题,但确实能通过编译,出来的ko驱动也能在开发板上运行,就Ok了
6、首先:在drivers/char目录中放置自己的驱动源程序lxm_hello_module.c。
其次:修改drivers/char目录中Kconfig,在其中添加如下内容:其中“depends on CPU_S3C6410”依赖于前述System MMU的选择,只有选择了mmu,在make menuconfig中 LXM_HELLO_MODULE才能可选。编译前勾选此项
config LXM_HELLO_MODULE
tristate "lxm hello module sample"
depends on CPU_S3C6410
help
lxm hello module sample.
然后:修改drivers/char目录中Makefile,在最后添加 obj-$(CONFIG_LXM_HELLO_MODULE) += lxm_hello_module.o
7、make zImage
8、make modules
9、将drivers/char目录中生成的lxm_hello_module.ko文件复制到开发板上
10、在开发板上运行i
4000
nsmod lxm_hello_module.ko安装模块
11、lsmod查看模块是否安装,rmmod lxm_hello_module可以卸载模块
内核移植可参考http://www.cnblogs.com/ape-ming/p/5170610.html,没有试验,感觉比较靠谱
驱动能顺利移植就是参考了它的,之前生成好的ko驱动在开发板一直提示内存错误,之后lsmod就没反应,只能重启开发板
1.光盘A中linux-2.6.38-20150708.tgz
2.交叉编译器arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz
3.tiny6410开发板(自带的系统)
步骤:
一、解压内核
tar xzvf linux-2.6.39.tar.gz
二、修改Makefile
ARCH ?= $(SUBARCH) CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
改成:
ARCH ?= arm CROSS_COMPILE ?= arm-linux-
三、进入解压出来的linux-2.6.39目录,拷贝arch/arm/configs/s3c6400_defconfig到当前目录并重命名为.config
cp arch/arm/configs/s3c6400_defconfig ./.config
四、基本配置
执行make menuconfig
1、设置System Type
首先:设置System Type->ARM System type为Samsung S3C64XX
其次:选择System MMU类型为MINI6410
System Type ---> *** System MMU *** │ │ -*- S3C64XX DMA │ │ [ ] SMDK6400 │ │ [ ] A&W6410 │ │ [*] MINI6410 │ │ [ ] REAL6410 │ │ [ ] SMDK6410 │ │ [ ] NCP │ │ [ ] Airgoo HMT │ │ [ ] SmartQ 5 │ │ [ ] SmartQ 7
只选上MINI6410其它的不选。
2、支持进程中通信
General setup ---> │ │ [*] System V IPC
3、关掉Touchscreen触摸屏的相关驱动模块,应该在make zImage中总是出现相关变量未定义的问题。关掉也不影响驱动的开发。
4、解决VERMAGIC不一致的问题
首先:修改主Makefile文件的头四行为
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 38
EXTRAVERSION =-FriendlyARM
其次:修改目录下源码中的include/linux/vermagic.h中的VERMAGIC_STRING如下:
#define VERMAGIC_STRING \
UTS_RELEASE " preempt mod_unload ARMv6 "
/*MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT \
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS \
MODULE_ARCH_VERMAGIC*/
5、解决make zImage 时no machine record defined 错误
将arch/arm/kernel/vmlinux.lds的最后两行(如下)给注释起来
ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")
网上有说这样做没有从根本上解决问题,但确实能通过编译,出来的ko驱动也能在开发板上运行,就Ok了
6、首先:在drivers/char目录中放置自己的驱动源程序lxm_hello_module.c。
其次:修改drivers/char目录中Kconfig,在其中添加如下内容:其中“depends on CPU_S3C6410”依赖于前述System MMU的选择,只有选择了mmu,在make menuconfig中 LXM_HELLO_MODULE才能可选。编译前勾选此项
config LXM_HELLO_MODULE
tristate "lxm hello module sample"
depends on CPU_S3C6410
help
lxm hello module sample.
然后:修改drivers/char目录中Makefile,在最后添加 obj-$(CONFIG_LXM_HELLO_MODULE) += lxm_hello_module.o
7、make zImage
8、make modules
9、将drivers/char目录中生成的lxm_hello_module.ko文件复制到开发板上
10、在开发板上运行i
4000
nsmod lxm_hello_module.ko安装模块
11、lsmod查看模块是否安装,rmmod lxm_hello_module可以卸载模块
内核移植可参考http://www.cnblogs.com/ape-ming/p/5170610.html,没有试验,感觉比较靠谱
驱动能顺利移植就是参考了它的,之前生成好的ko驱动在开发板一直提示内存错误,之后lsmod就没反应,只能重启开发板
相关文章推荐
- ZLG7290键盘驱动开发心得——转载
- SD卡驱动开发心得体会
- 搭建tiny6410驱动开发环境_ftp服务器
- Linux驱动开发----块设备驱动(内存模拟)Tiny6410
- SD卡驱动开发心得体会
- 行为驱动开发学习心得(一)
- Linux驱动程序开发之三----按键驱动(Tiny6410)
- [转]ZLG7290键盘驱动开发心得
- 慢慢学Linux驱动开发,第九篇,tiny6410_LED驱动
- 嵌入式Linux驱动开发之helloword心得
- 嵌入式Linux驱动开发之helloword心得
- nanopi s2 驱动开发心得(二) s5p4418的GPIO函数
- Linux驱动开发之五---按键驱动(查询方式)(Tiny6410)
- 文件系统驱动开发心得
- 驱动开发心得
- 测试驱动开发的半年实战心得
- 继续:基于Passthru的NDIS过滤驱动开发心得
- ZLG7290键盘驱动开发心得
- 搭建tiny6410驱动开发环境_NFS共享文件
- 搭建tiny6410驱动开发环境_NFS起文件系统_NoSharedLibs