电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
开发板专区
【三星S5P4418卡片电脑试用体验】 +程序要进入内核,鸟要...
【三星S5P4418卡片电脑试用体验】 +程序要进入内核,鸟要...
三星
电脑
程序
安卓小王子
LV4工程师
| 2016-12-01 21:02:11
浏览量 2197
回复:6
发表新帖
本帖最后由 安卓小王子 于 2016-12-5 10:21 编辑
程序要进入内核,鸟要活在
dang
下
-
逍遥游
本贴主要是说明把自己写的程序编入
linux
的内核中。因为
4418
的这个开发板厂商没有提供相关的文档说明,所以只能根据自己以前的经验尝试下,不过还好大多数方案厂商都是用的相对一致的内核结构。所以本次把程序编进内核加载的实验能够完成。
1、
写自己的测试程序以下是我的测试程序案例 #include
#include
#include
static int liao_hello_init(void){ printk("
云汉有人,其名为鸟,鸟之大,不知其几公斤也,化而为鹏,鹏之臂,不知其几膂力也
\r\n");
mdelay(20000);//
延时
20s
,
mdelay
是
ms
级别的,为了能看到调试信息,而不是一闪而过
printk("da peng da peng ni zui qiang da peng da peng ni zui bang!\r\n");//
自己读下拼音
mdelay(20000); return 0;} module_init(liao_hello_init);
需要调用到几个函数,所以需要进行头文件的说明,
module.h
是模块加载,
init
是初始化函数,
delay
是延时函数。另外
printk
()函数一般做出输出调试信息存在。
2、
在
linux/kernel/drivers/
下新建一个目录。加入
.c
的程序文件和
kconfig
,
Makefile
文件。
.c
的文件就是上面的范例,然后新建目录里面的
Kconfig
这样写
config LIAO_HELLO_DRIVER tristate "liao-hello driver" default y help compile for liao-hello driver,y for kernel,m for module.
主要是配置一个
LIAO_HELLO
的驱动,然后
tristate
是表示是三态的形式,
default y
表示默认是编译进内核。这个可以自己百度详细说明。
然后
Makefile
这样写
obj-$(CONFIG_LIAO_HELLO_DRIVER) += liao-hello.o
执行编译的时候,会根据上面的
Kconfig
编译内核的
.o
格式的文件。
3、
在外面的
drivers
的目录下的
Kconfig
和
Makefile
下加入新建目录的参数。
derivers
目录下的
Kconfig
加入新增驱动的路径的
Kconfig
,加入下面这句。
source "drivers/liao-hello/Kconfig"
然后在
derivers
目录下的
Makefile
加入下面这句,这样在编译过程中就会把
liao-hello.c
文件编译,生产内核对应的
.o
的目标文件。
obj-y += liao-hello/
4、
进入
s5p4418
的
linux
源文件主目录下进行编译内核操作,最好生产内核文件。主目录就是
g4418_linux
,里面有一个脚本文件
mk.sh
。那么执行下面的指令就可以编译内核文件了。
sudo ./mk.sh -k
最好在
g4418_linux/linux/out/release
下的目录找到
boot.img
文件。通过
fastboot
方式或者
SD
卡方式烧写到板子中(烧录的方式之前的帖子有介绍)。重启电脑看下出来的调试信息。
最最遗憾的是,串口无法接收中文的数据,这个太遗憾了,哪天我研究看下能否搞定。
看下了,如果要显示中文,那么这个串口软件在全局选项的外观页面,选择UTF-8的形式就可以了。
本帖最后由 安卓小王子 于 2016-12-5 10:21 编辑
程序要进入内核,鸟要活在
dang
下
-
逍遥游
本贴主要是说明把自己写的程序编入
linux
的内核中。因为
4418
的这个开发板厂商没有提供相关的文档说明,所以只能根据自己以前的经验尝试下,不过还好大多数方案厂商都是用的相对一致的内核结构。所以本次把程序编进内核加载的实验能够完成。
1、
写自己的测试程序以下是我的测试程序案例 #include
#include
#include
static int liao_hello_init(void){ printk("
云汉有人,其名为鸟,鸟之大,不知其几公斤也,化而为鹏,鹏之臂,不知其几膂力也
\r\n");
mdelay(20000);//
延时
20s
,
mdelay
是
ms
级别的,为了能看到调试信息,而不是一闪而过
printk("da peng da peng ni zui qiang da peng da peng ni zui bang!\r\n");//
自己读下拼音
mdelay(20000); return 0;} module_init(liao_hello_init);
需要调用到几个函数,所以需要进行头文件的说明,
module.h
是模块加载,
init
是初始化函数,
delay
是延时函数。另外
printk
()函数一般做出输出调试信息存在。
2、
在
linux/kernel/drivers/
下新建一个目录。加入
.c
的程序文件和
kconfig
,
Makefile
文件。
.c
的文件就是上面的范例,然后新建目录里面的
Kconfig
这样写
config LIAO_HELLO_DRIVER tristate "liao-hello driver" default y help compile for liao-hello driver,y for kernel,m for module.
主要是配置一个
LIAO_HELLO
的驱动,然后
tristate
是表示是三态的形式,
default y
表示默认是编译进内核。这个可以自己百度详细说明。
然后
Makefile
这样写
obj-$(CONFIG_LIAO_HELLO_DRIVER) += liao-hello.o
执行编译的时候,会根据上面的
Kconfig
编译内核的
.o
格式的文件。
3、
在外面的
drivers
的目录下的
Kconfig
和
Makefile
下加入新建目录的参数。
derivers
目录下的
Kconfig
加入新增驱动的路径的
Kconfig
,加入下面这句。
source "drivers/liao-hello/Kconfig"
然后在
derivers
目录下的
Makefile
加入下面这句,这样在编译过程中就会把
liao-hello.c
文件编译,生产内核对应的
.o
的目标文件。
obj-y += liao-hello/
4、
进入
s5p4418
的
linux
源文件主目录下进行编译内核操作,最好生产内核文件。主目录就是
g4418_linux
,里面有一个脚本文件
mk.sh
。那么执行下面的指令就可以编译内核文件了。
sudo ./mk.sh -k
最好在
g4418_linux/linux/out/release
下的目录找到
boot.img
文件。通过
fastboot
方式或者
SD
卡方式烧写到板子中(烧录的方式之前的帖子有介绍)。重启电脑看下出来的调试信息。
最最遗憾的是,串口无法接收中文的数据,这个太遗憾了,哪天我研究看下能否搞定。
看下了,如果要显示中文,那么这个串口软件在全局选项的外观页面,选择UTF-8的形式就可以了。
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
3
mingming
2016-12-06
楼主很有大侠风范啊,逍遥游这是是什么鬼?
0
回复
举报
发布
安卓小王子
回复
2016-12-06
庄子-《逍遥游》 去搜搜
0
回复
举报
发布
lkl0305@163.com
回复
2016-12-06
不错,学习下
0
回复
举报
发布
new world
回复
2016-12-08
谢谢分享顶一个
0
回复
举报
发布
LiuYang
2016-12-05
月月鸟
0
回复
举报
发布
海豚
2016-12-02
赞一个,谢谢分享~
0
回复
举报
发布
×
举报
举报人:
被举报人:安卓小王子
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子