Linux驱动开发

108 阅读4分钟

一、Linux基础知识

 /
 ├── bin          所有用户都可以使用的、基本的命令
 ├── boot         启动文件,比如内核等
 ├── dev          设备文件,Linux特有的
 ├── etc          配置文件
 ├── home         家目录
 │   ├── book     用户book的家目录
 ├── lib          库
 ├── media        插上U盘等外设时会挂载到该目录下
 ├── mnt          用来挂载其他文件系统
 ├── opt          Optional,可选的程序
 ├── proc         用来挂载虚拟的proc文件系统,可以查看各进程(process)的信息
 ├── root         root用户的家目录
 ├── sbin         基本的系统命令,系统管理员才能使用
 ├── sys          用来挂载虚拟的sys文件系统,可以查看系统信息:比如设备信息
 ├── tmp          临时目录,存放临时文件
 ├── usr          Unix Software Resource, 存放可分享的与不可变动的的数据
 │   ├── bin      绝大部分的用户可使用指令都放在这里(与开机无关), /bin中的命令跟开机有关
 │   ├── games    游戏
 │   ├── include  头文件
 │   ├── lib      库
 │   ├── local    系统管理员在本机自行安装、下载的软件
 │   ├── sbin     非系统正常运作所需要的系统命令
 │   ├── share    放置共享文件的地方, 比如/usr/share/man里存放帮助文件
 │   └── src      源码
 └── var          主要针对常态性变动的文件,包括缓存(cache)、log文件等

1、常用命令

1.1、查找

grep "abc" * -nwr  //r递归、n显示行号

1.2、权限修改

chmod 777 .bashrc
将文件.bashrc 这个文件的所有权限设置都启用。
符号类型改变文件权限方式
使用 u、g、o 三个字母代表 user、group、others 3 中身份。此外 a 代表
all,即所有身份。
范例:
chmod u=rwx,go=rx .bashrc
也可以增加或去除某种权限,“+”表示添加权限,“-”表示去除权限:
chmod a+w .bashrc
chmod a-x .bashrc

1.3、压缩与解压

gzip(.gz)/bzip2(.bz2)

  • -l(list):列出压缩文件的内容。
  • -k(keep):在压缩或解压时,保留输入文件。
  • -d(decompress):在压缩或解压时,保留输入文件。

tar tar 常用选项:

  • -c(create):表示创建,用来生成文件包。
  • -x:表示提取,从文件包中提取文件。
  • -t:可以查看压缩的文件。
  • -z:使用 gzip 方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。
  • -j:使用 bzip2 方式进行处理,它与”c“结合就表示压缩,与”x“结合就表示解压缩。
  • -v(verbose):详细报告 tar 处理的信息。
  • -f(file):表示文件,后面接着一个文件名。
  • -C <指定目录> 解压到指定目录。
1.tar打包、gzip压缩
1)压缩
	tar -czvf   压缩文件名   目录名
	如:tar czvf dira.tar.gz  dira

注意:
tar  -czvf与tar  czvf是一样的效果,所以说,后面统一取消-。

2)查看
	tar tvf   压缩文件名
	如:tar tvf dira.tar.gz

3)解压
	tar xzvf 压缩文件名
	tar xzvf 压缩文件名  -C  指定目录
	如:tar xzvf dira.tar.gz   解压到当前目录
	如:tar xzvf dira.tar.gz   -C  /home/book   解压到/home/book
	
	
2.tar打包、bzip2压缩
1)压缩
	tar cjvf   压缩文件名   目录名
	如:tar cjvf dira.tar.bz2  dira
	
2)查看
	tar tvf   压缩文件名
	如:tar tvf dira.tar.bz2

3)解压
	tar xjvf 压缩文件名
	tar xjvf 压缩文件名  -C  指定目录
	如:tar xjvf dira.tar.bz2   解压到当前目录
	如:tar xjvf dira.tar.bz2 -C  /home/book  解压到/home/book

1.4、网络设置

设置网络IP

sudo ifconfig eth0 192.168.1.137

route 和 DNS 确保 Windows 和 Ubuntu 的网络能互相 ping 通之后,如果 Ubuntu 无法上网,原因通常有 2 个:路由没设置好,DNS 没设置好。

如果执行以下命令不成功,表示路由没设置好:

$ ping 8.8.8.8
connect: Network is unreachable

如果"ping 8.8.8.8"成功,但是"ping www.baidu.com" 不成功,则是DNS没设置好:

$ ping www.baidu.com
ping: unknown host www.baidu.com

DNS 的设置比较简单,8.8.8.8 是好记好用的 DNS 服务器,修改 Ubuntu 中的/etc/resolv.conf 文件,内容如下:

nameserver 8.8.8.8

路由信息使用 route 命令查看,其输出信息可以参考链接: akaedu.github.io/book/ch36s0…

NAT 网卡:Ubuntu 通过它上网,只要 Windows 能上网,Ubuntu 就能上网 桥接网卡:Ubuntu 通过它跟开发板联通

vi /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.111
gateway 192.168.1.1
netmask 255.255.255.0

重启网络

/etc/init.d/S40network restart
udhcpc -i eth1

1.5、其余命令

dd if=/dev/zero of=test bs=1024 count=1024
while [ 1 ]; do echo aaa > /dev/tty; sleep 3; done

df -h

image.png

2、NFS与TFTP

2.1、NFS

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt

2.2、TFTP

一、上传到指定文件夹

tftp -p -l file target_ip

这里的file可以是一个目录,如 C:\User\Administrator\Documents。

二、下载到当前目录

tftp -g -r file source_ip

三、Linux驱动开发

ls /dev/hello
cat /proc/devices
cat /proc/mounts
mount -t sysfs none /mnt # 挂载虚拟文件系统,不需要指定具体的设备节点

通过主设备确定对应哪个驱动 通过次设备号确定对应驱动中的哪个硬件

make mrproper命令会删除所有的编译生成文件、内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令。

make clean命令则是用于删除大多数的编译生成文件,但是会保留内核的配置文件.config,还有足够的编译支持来建立扩展模块。所以你若只想删除前一次编译过程的残留数据,只需执行make clean命令。

ab-y := a.o b.o
obj-m += ab.o