p7
野火提供两个开发板,ALPHA和 Mini。
ALPHA例程比较多且完善。
p45-p46 前言
学习linux驱动开发前最好会一些cortex-m核的开发
为什么选择imx6ul这个芯片学习
学习顺序为:ubuntu系统,裸机例程,系统移植,驱动开发(重点)
p46 第一篇
详细学习ubuntu系统,《鸟哥linux私房菜》
p47-p80 ubuntu系统安装
安装虚拟机
安装ubuntu16系统
p81-p135 ubuntu系统入门
参考《Ubuntu Linux从入门到精通》
终端中提示符含义:zuozhongkai@zuozhongkai-virtual-machine: ~$
shell是什么?一个应用程序,接收用户输入,传递给内核,接收内核输出,反馈给用户。
命令格式:command -option [argument]
常用命令:ls, cd, pwd, uname, clear, sudo, su, cat, ifconfig, man, reboot, poweroff,
apt下载工具,更换源文件????
编辑工具:gedit, vim, vscode
vim常用命令:nG光标移动到第n行首,ctrl+f下一页,ctrl+b上一页,dd删除整行,nyy复制当前行及下面n行,P粘贴,/查找
文件系统:实现数据的查询和存储。格式化就是创建文件系统的过程。linux下需要通过mount到具体目录来挂载磁盘,才能访问磁盘。
df -Th查看文件系统类型
文件操作常用命令:touch, mkdir, rm, rmdir, cp, mv, chmod, chown
文件压缩: zip -r xxx.zip xxx/ tar -cjf xxx.tar.bz2 xxx/ tar -czf xxx.tar.gz xxx/
文件解压: unzip xxx.zip tar -xjf xxx.tar.bz2 xxx/ tar -xzf xxx.tar.gz xxx/
文件查询: find [路径] [参数] [关键字] grep -ir [关键字] [文件列表]
文件权限rwx
磁盘管理: fdisk /dev/sdx mkfs [参数] [-t 类型] [/dev/sdxx] mount [参数] [-t 类型] [/dev/sdxx] [挂载点] umount [参数] [-t 类型] [/dev/sdxx]
p136-p linux c编程
vim默认tab是8个空格,改成4个,/etc/vim/vimrc添加set ts=4
vim默认不显示行号,/etc/vim/vimrc添加set nu
vim使用空格代替tab,/etc/vim/vimrc添加set noexpandtab
编译代码:gcc xxx.c -o xxx -c 只编译 -o 输出文件名称 -g 添加调试信息 -O 编译器优化程度
Makefile 1.如果工程没有被编译过,工程中所有文件都被编译并链接成可执行程序 2.如果工程中只有个别c文件被修改,只编译这些被修改的 3.如果头文件被修改,编译所有引用这个头文件的c文件,并链接成可执行程序
Makefile语法:有一系列规则组成,规则格式如下,只能使用tab,不能用空格 目标...: 依赖文件集合... 命令1 命令2 ...
Makefile终极目标是第一个规则目标中的第一个,其他规则的顺序没有意义
Makefile变量赋值
= 变量的真实值取决于最后一次有效值
:=
?= 如果没有被赋值,则会赋值,否则不会被赋值
+= 变量赋值的追加,空格隔开
$(xxxx) 变量的使用
模式规则: 至少在目标中要包含%,否则就是一般规则。目标中的%表示对文件名的匹配,表示任意长度的非空字符串,比如%.c就是所有的以.c结尾的文件。当目标中%所代表的值决定了依赖中的%值。
自动化变量:
是一种变量会把模式中所定义的一系列的文件自动的挨个取出,直至所有的符合模式的文件都取完,自动化变量只应该出现在规则的命令中
$@
$%
$^
$+
$*
伪目标:防止目录下存在与目标同名文件 .PHONY: clean
条件判断: ifeq(参数1, 参数2) xxxx else xxxx endif
ifdef 变量名 ifndef 变量名
Makefile函数:不支持自定义,用法
字符串替换函数