Linux驱动开发(1)之环境搭建小试牛刀

一、环境搭建

最简单的方法就是:

1、Windows下安装VMware

2、WMware下安装Ubuntu(本人装的ubuntu-10.04-desktop-i386(ubuntu发行版的名字、10.04是10年04月、desktop是发行的版本、i386是cpu的型号和类型))

3、此时你的环境已经搭建好了,要多简单就多简单,是不是还没有做什么?怎么可能?这是因为Ubuntu已经帮我们做好了。

4、刚安装Ubuntu怎么配置屏幕分辨率呢?System-Preferences-Monitors

5、验证:打开终端(快捷键:ctrl+atl+t)输入uname -a或uname -r查看内核版本;源码目录:/usr/src

二、小试牛刀

1、在你的用户下新建一个目录:study(可以任意,本文以study为例)

2、建两个文件

第一个:hello.c

代码如下:

#include<linux/module.h>

#include<linux/init.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)

{

printk(KERN_ALERT "Hello world.\n");

return 0;

}

static int hello_exit(void)

{

printk(KERN_ALERT "Goodbye.\n");

return 0;

}

module_init(hello_init);

module_exit(hello_exit);

第二个文件:Makefile(注意M大写且无后缀名,下面的all和clean下的那一行指令前的空白式一个Tab建)

内容如下:

obj-m := hello.o

KERNEL_DIR := /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

all:

make -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules

clean:

rm *.o *.ko

.PHONY:clean

3、执行(注意:当提示Operation not permitted请在指令前加sudo)

首先进入到目录study

然后执行:make

其次加载模块到内核:insmod ./hello.ko

查看是否有hello模块:lsmod

最后卸载模块:rmmod hello

时间: 2024-10-28 16:20:07

Linux驱动开发(1)之环境搭建小试牛刀的相关文章

linux驱动系列之调试环境搭建一

2014年刚开始学习linux时,搭建环境花了很多时间.当时最熟悉的是单片机如Mag16和stm32,依据以往学习单片机的经验肯定要用下载器下载程序,但是我找了很久没有比较好的IDE,不像Mag16有AVR Studio.stm32有Keil集成开发环境可以使用.当时查找资料说ADS可以用,但是流程很是复杂,其实后来发现eclipse也是可以使用的,但是那时只有一个jlink,而且是在虚拟机VMware里面装了一个ubuntu系统,然后在虚拟的这个系统里面安装交叉编译环境,编译uboot.内核,

s3c6410 Linux 驱动开发环境搭建

s3c6410 Linux 驱动开发环境搭建 -- 既然你是做Linux开发的,你还用虚拟机? 非常多人都在win下做开发,于是SD_writer.exe之类的烧写工具"大行其道",多是用虚拟机Linux. 全然转到Linux下学习開始蛮不爽的,开发板制作商送的教程都是些讲Win-CE的东东,感觉实质性的东西没什么.对于全然用Linux做开发的技术解说非常少,连烧写SD卡都用的win以下的程序.后来找了些资料,整理在这里,希望留给有心人.共同营造一个更好的共同学习的环境. 当别人遇到困

Linux内核(17) - 高效学习Linux驱动开发

这本<Linux内核修炼之道>已经开卖(网上的链接为: 卓越.当当.china-pub ),虽然是严肃文学,但为了保证流畅性,大部分文字我还都是斟词灼句,反复的念几遍才写上去的,尽量考虑到写上去的每段话能够让读者产生什么疑惑,然后也都会紧接着尽量的去进行解释清楚,中间的很多概念也有反复纠结过怎么解释能够更容易的理解,力求即使对于初学者也可以有很少阻碍的一气读完.同时我也把书中一部分自己的感悟抽出来整理了精华版,share出来.当然水平有限,错漏之处有发现而修订时遗漏的,也有尚没有发现的.这本书

【转】linux驱动开发的经典书籍

原文网址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为<linux_device_driver 3rd Edition>,这是一本很经典的书,无奈Linux的东东还是过于庞大,这本侧重于实战的书籍也只能停留在基本的接口介绍上,更深入的东东只能靠我们自己摸索了.但万事总有一个开头,没有对Linux驱动整体框架的把握是很难做一个优秀的驱动开发者的.除了

Tiny4412 开发板 编译环境搭建

/************************************************************************************** * Function     : Tiny4412 开发板 编译环境搭建 * Create Date  : 2016/04/04 * Author       : NTSK13 * Email        : [email protected] * Copyright    : 欢迎大家和我一起交流学习,转载请保持文章的

Linux驱动开发之 六 (那些必须要了解的硬件知识 之 仪器篇)

Linux驱动开发之 六 (那些必须要了解的硬件知识 之 仪器篇) 一.前言 在之前的文章中,老谢已经分享了不少关于嵌入式系统开发过程中必须要了解的硬件知识.作为这一小节的结束(哎呀,终于要结束了),老谢还想和大家聊聊"仪器".本文中老谢不聊仪器的具体使用方法.原理等.只想聊点轻松的,老谢结合自己的实际工作,以图文结合的方式,简单聊聊工作中使用到的仪器. 实话实说,前几篇文章基本无技术含量,包括本文.老谢坚持写这几篇的用意是: Linux驱动开发,必须以此为基础: 通过写博客的方式,让

linux驱动开发重点关注内容--摘自《嵌入式Linux驱动模板精讲与项目实践》

本文摘自本人拙著 <嵌入式Linux驱动模板精讲与项目实践> 初步看起来Linux设备驱动开发涉及内容非常多,而须要实现驱动的设备千差万别.事实上做一段时间驱动之后回首看来主要就是下面几点: (1)对驱动进行分类.先归纳为哪个类型的驱动.归类正确再利用内核提供的子系统进行开发,往往会发现事实上非常多通用的事情内核已经帮我们做了,一个优秀的驱动project师应该最大程度上利用内核的资源.内核已经实现的毕竟稳定性强.可移植性高. (2)找到内核的提供的子系统.接下来就是要制作该子系统对该类设备提

linux 下cocos2dx-3.3.1环境搭建

1.安装依赖 依赖包含: libx11-dev libxmu-dev libglu1-mesa-dev libgl2ps-dev libxi-dev g++ libzip-dev libpng12-dev libcurl4-gnutls-dev libfontconfig1-dev libsqlite3-dev libglew*-dev libssl-dev 假设你的系统是Ubuntu/Debian,能够通过运行build文件夹下的install-deps-linux.sh脚本来安装依赖,也可自

Linux 驱动开发笔记(一)

1.查看printk函数日记输出 (1)使用字符终端:通常使用ctrl+alt+f1切换查看: (2)使用cat /proc/kmsg命令:(在Linux系统启动后,/proc/kmsg文件可以查看内核对外所用的符号表,可以用cat命令查看器内容.) (3)使用dmesg命令查看. linux/kernel.h文件定义的printk函数的Log Level: 常数定义语句 意义 #define KERN_EMERG "<0>"/*系统不运行*/ #define KERN_A

Linux驱动开发 -- 打开dev_dbg()

Linux驱动开发 -- 打开dev_dbg() 2012-10-23 19:21:54 分类: LINUX linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KERN_DEBUG )来输出打印信息.要打开这个开关需要下面两步. 1.打开调试开关:你调试的文件中必然包含了<linux/device.h>,或者<linux /paltforam_device.h>,后者包含了前者,在包含此头文件之前,使用#define D