嵌入式linux学习-驱动(2) hello world 模块实现记录 基于RK3568
今天跟随 讯为的开发板实现了 hello world 的驱动,之前已经实现了很多次,这次还是重新实现了一次 本文是基于RK3568
1. 编迅为的内核
topeet@ubuntu:~/Linux/rk356x_linux$ ./build.sh kernel
processing option: kernel
============Start building kernel============
TARGET_ARCH =arm64
TARGET_KERNEL_CONFIG =rockchip_linux_defconfig
TARGET_KERNEL_DTS =rk3568-evb1-ddr4-v10-linux
TARGET_KERNEL_CONFIG_FRAGMENT =
==========================================HOSTCC scripts/basic/fixdepHOSTCC scripts/kconfig/conf.oYACC scripts/kconfig/zconf.tab.cLEX scripts/kconfig/zconf.lex.cHOSTCC scripts/kconfig/zconf.tab.oHOSTLD scripts/kconfig/conf
#
# configuration written to .config
xxx
... LD [M] drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmdhd.oBuilding modules, stage 2.MODPOST 3 modulesCC drivers/net/wireless/marvell/mwifiex/mwifiex.mod.oCC drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.mod.oCC drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmdhd.mod.oLD [M] drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmdhd.koLD [M] drivers/net/wireless/marvell/mwifiex/mwifiex.koLD [M] drivers/net/wireless/marvell/mwifiex/mwifiex_sdio.ko
found ./arch/arm64/boot/dts/rockchip/.rk3568-evb1-ddr4-v10-linux.dtb.dts.tmp
found ./arch/arm64/boot/dts/rockchip/.rk3568-evb1-ddr4-v10-linux.dtb.dts.tmp
found ./arch/arm64/boot/dts/rockchip/.rk3568-evb1-ddr4-v10-linux.dtb.dts.tmp
found ./arch/arm64/boot/dts/rockchip/.rk3568-evb1-ddr4-v10-linux.dtb.dts.tmp
found ./arch/arm64/boot/dts/rockchip/.rk3568-evb1-ddr4-v10-linux.dtb.dts.tmp
found ./arch/arm64/boot/dts/rockchip/.rk3568-evb1-ddr4-v10-linux.dtb.dts.tmp
found ./arch/arm64/boot/dts/rockchip/.rk3568-evb1-ddr4-v10-linux.dtb.dts.tmpImage: resource.img (with rk3568-evb1-ddr4-v10-linux.dtb logo.bmp logo_kernel.bmp) is readyImage: boot.img (with Image resource.img) is readyImage: zboot.img (with Image.lz4 resource.img) is ready
fdt {kernel {resource {FIT description: U-Boot FIT source file for arm
Created: Tue Dec 20 22:33:35 2022Image 0 (fdt)Description: unavailableCreated: Tue Dec 20 22:33:35 2022Type: Flat Device TreeCompression: uncompressedData Size: 137945 Bytes = 134.71 KiB = 0.13 MiBArchitecture: AArch64Load Address: 0xffffff00Hash algo: sha256Hash value: 9cd38b1dd5c8dff695ae9928a6f96cc7d35dc3fd712907989d96c31a5ebb1aafImage 1 (kernel)Description: unavailableCreated: Tue Dec 20 22:33:35 2022Type: Kernel ImageCompression: uncompressedData Size: 26578952 Bytes = 25956.01 KiB = 25.35 MiBArchitecture: AArch64OS: LinuxLoad Address: 0xffffff01Entry Point: 0xffffff01Hash algo: sha256Hash value: 86c70073ba22fb58d4121acf95e4f8a45772a3260da3686e07883adcc7c55a6dImage 2 (resource)Description: unavailableCreated: Tue Dec 20 22:33:35 2022Type: Multi-File ImageCompression: uncompressedData Size: 176128 Bytes = 172.00 KiB = 0.17 MiBHash algo: sha256Hash value: 0f60a9def334606c948d16f093c7340c2a4c1a7cae7ffc04ac0d2b663cc2f318Default Configuration: 'conf'Configuration 0 (conf)Description: unavailableKernel: kernelFDT: fdt
grep: exceeded PCRE's backtracking limit
grep: exceeded PCRE's backtracking limit
grep: exceeded PCRE's backtracking limit
grep: exceeded PCRE's backtracking limit
grep: exceeded PCRE's backtracking limit
grep: exceeded PCRE's backtracking limit
grep: exceeded PCRE's backtracking limit
grep: exceeded PCRE's backtracking limitPLEASE CHECK BOARD GPIO POWER DOMAIN CONFIGURATION !!!!!<<< ESPECIALLY Wi-Fi/Flash/Ethernet IO power domain >>> !!!!!Check Node [pmu_io_domains] in the file: /home/topeet/Linux/rk356x_linux/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts请再次确认板级的电源域配置!!!!!!<<< 特别是Wi-Fi,FLASH,以太网这几路IO电源的配置 >>> !!!!!检查内核文件 /home/topeet/Linux/rk356x_linux/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts 的节点 [pmu_io_domains]
Running build_kernel succeeded.
topeet@ubuntu:~/Linux/rk356x_linux$
内核编译层面 迅为基本已经都做好了 我这边使用的是迅为提供的虚拟机。
接下来按照文档说明的开始抄代码
第一个驱动如下 :
#include <linux/module.h>
#include <linux/init.h>static int __init hello_init(void)
{printk("init ... \n");return 0;
}static void hello_exit(void)
{printk("exit ... \n");
}module_init(hello_init);
module_exit(hello_exit);MODULE_LICENSE("GPL v2");
MODULE_AUTHOR("jeason b");
MODULE_VERSION("1.0.0");
对应的makefile 如下:
obj-m += hello.o
KDIR:=/home/topeet/Linux/rk356x_linux/kernel
PWD?=$(shell pwd)
all:make -C $(KDIR) M=$(PWD) modules
clean:make -C $(KDIR) M=$(PWD) cleanrm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
2.模块安装测试
[root@RK356X:~]# modinfo hello.ko
-/bin/sh: modinfo: not found
[root@RK356X:~]# insmod hello.ko
[ 6478.328524] init ...
[root@RK356X:~]# rmmod hello.ko
[ 6482.710927] exit ...
[root@RK356X:~]#
在 rk3568 开发板的默认的系统里面没找到 modinfo的指令 在ubuntu上查看模块信息
topeet@ubuntu:~/drive/hello$ ls
hello.c hello.ko hello.mod.c hello.mod.o hello.o Makefile modules.order Module.symvers
topeet@ubuntu:~/drive/hello$
topeet@ubuntu:~/drive/hello$ modinfo hello.ko
filename: /home/topeet/drive/hello/hello.ko
version: 1.0.0
author: jeason b
license: GPL v2
srcversion: 8C25FFFAB4F34B01755F9C1
depends:
name: hello
vermagic: 4.19.232 SMP mod_unload aarch64
topeet@ubuntu:~/drive/hello$
topeet@ubuntu:~/drive/hello$ file hello.ko
hello.ko: ELF 64-bit LSB relocatable, ARM aarch64, version 1 (SYSV), BuildID[sha1]=9d25a5a92f3e27c8bc230f32ef6c54332b2d7a14, with debug_info, not stripped
嵌入式linux学习-驱动(2) hello world 模块实现记录 基于RK3568相关推荐
- linux内核创建字符节点,Tiny6410学习ing—(四)、嵌入式Linux内核驱动进阶—(7)、高级字符设备驱动(自动创建节点)—#931...
按照国嵌的视频教程上来说的,最后就是-自动创建设备文件! 其实我感觉以前完全可以直接是手动创建了设备文件,然后就可以直接讲述自动创建设备文件,为啥非要拖到最后来讲述,我也就不清楚了!! 不管了,写完收 ...
- 嵌入式linux设备驱动开发,嵌入式Linux设备驱动开发简介.pdf
清远见--嵌入式培训专家 http :// "黑色经典"系列之<嵌入式Linux 应用程序开发详解> 11 章 嵌入式Linux 设备驱动开发 本章目标 本书从 6 章 ...
- 【正点原子MP157连载】第二十一章 嵌入式Linux LED驱动开发实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
- 嵌入式linux学习步骤
<一> 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linu ...
- 转——嵌入式Linux学习路线
可能是年前跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助. 我们暂且宏观上把程序员分为3类:业务类,专业类,系统类. 业务类 ...
- linux cached释放_正点原子Linux第四十一章嵌入式Linux LED驱动开发实验
1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第四十一章嵌入式Linux LED驱动开发实验 上一章我 ...
- linux嵌入式如何学习,嵌入式Linux要如何学习?嵌入式linux学习路线讲解
在学习嵌入式linux之前,一定要有C语言基础,而且是越熟练越好.对于汇编基础来说没有那么重要,当然对于C语言来说起码能够熟练写出一个数组排序.输入数字求和之类的程序代码.当然如果不熟悉的话就需要多写 ...
- 嵌入式linux学习路线参考(LINUX学习者必看经典)
整理了嵌入式linux学习路线供参考,希望对您有所参考价值! 一.linux入门 目前嵌入式主要开发环境有 Linux.Wince等:Linux因其开源.开发操作便利而被广泛采用.而Linux操作系统 ...
- 【正点原子Linux连载】第四十一章 嵌入式Linux LED驱动开发实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
最新文章
- C语言程序设计 | 动态内存管理:动态内存函数介绍,常见的动态内存错误,柔性数组
- 云数据中心选址PK:微软第一,IBM第二,谷歌最少
- python shape函数_Python中的多态及抽象类
- 基于Matlab的跨孔CT胖射线追踪算法(四)
- ARToolKit从图片生成特征点数据
- 集成电路的设计 —— 引脚
- editplus3注册码
- 安装配置MySQL5.7详细教程
- 猿创征文|从单机百万tpmc到分布式千万tpmc,GaussDB性能提升的3个关键技术剖析
- 44万条数据揭秘:如何成为网易云音乐评论区的网红段子手?
- Pycharm修改图片大小
- 使用matlab代码计算太阳高度角
- 人人都应该掌握的一些电脑操作技巧
- 阿里云服务器价格表,1核2G、2核4G、4核8G爆款配置收费标准
- 从0开始ubuntu16.04(虚拟机)安装tensorflow,spinningup
- Python画正方体
- 涂色问题 阿里编程机试题目
- 王爽 汇编语言 第二章 实验一
- 【深度学习框架输入格式】NCHW还是NHWC?
- Linux挂载proc文件夹,Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的分析与比较