当前位置: 首页 > article >正文

嵌入式知识点总结 Linux驱动 (一)-指令-常用Linux指令 GCC指令 GDB调试指令 驱动开发指令

 针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。

目录

1.怎么查看当前进程?怎么执行退出?怎么查看当前路径?

2.ls命令执行有什么功能?可以带哪些参数?

3.创建目录用什么命令?

4.创建文件用什么命令?

5.复制文件用什么命令?

6.查看文件内容有哪些命令可以使用?

7.怎么向屏幕输出带空格的字符串,比如“hello world"?

8.移动文件用哪个命令?改名用哪个命令?

9.删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?

10.查找文件内容用哪个命令? *

11.查找文件用哪个命令? *

12.cat命令

13.预处理

14.编译为汇编代码

15.汇编

16.链接

17.一步到位编译

18.多文件编译

19.警告处理

20.常用的GDB调试指令

21.加载/卸载驱动

22.Linux驱动如何查看驱动模块中打印信息?

23.如何查看内核中已有的字符设备的信息?

24.如何查看正在使用的有哪些中断号?   


1.怎么查看当前进程?怎么执行退出?怎么查看当前路径?

查看当前进程:ps

执行退出:exit

查看当前路径:pwd

2.ls命令执行有什么功能?可以带哪些参数?

列出当前路径目录和文件等相关名称

参数
-a显示所有文件及目录(.开头的隐藏文件也会列出)
-除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r将文件以相反次序显示(原定依英文字母次序)
-t将文件依建立时间之先后次序列出
-A 同 -à ,但不列出""(目前目录)及 ".."(父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加"*",目录则加""
-R 若目录下有文件,则以下之文件亦皆依序列出

3.创建目录用什么命令?

mkdir XXX
mkdir -p xxx/test 

在工作目录下的 xxx 目录中,建立一个名为 test 的子目录若 xxx 目录原本不存在,则建立一个。(注:本例若不加-p 参数,且原本 xxx目录不存在,则产生错误。)

4.创建文件用什么命令?

vi或vim

vi file1.txt  #直接创建并打开一个文件file1.txt

touch

touch file2.txt  #创建新的空文件file2.txt

echo

echo "this is a new file" > file3.txt     #创建文件file3.txt并将this is a newfi1e写入(说明:使用>指令覆盖文件原内容并重新输入内容,若文件不存在则创建文件。)
echo "add contents" >> file3.txt          #在已存在的文件补充写入新内容add contents(说明:使用>>指令向文件追加内容,原内容将保存。)

less、more、cat

三者都是将文件内容输出到标准输出,其中less和more可以分页显示,cat是显示全部。
三者可以根据已经存在的文件创建新的文件。假设已经存在文件1.txt。

cat  1.txt > 2.txt
less 1.txt > 3.txt
more 1.txt > 4.txt

cd

cd >> file3.txt    #创建新的空文件file3.txt
cd >> file4.txt    #创建新的空文件file4.txt

cd最主要的作用是切换目录,在cd后面跟>或>>再加上文件名就可以创建一个内容为空的文件。它和echo的区别之处在于echo可写文件内容,而cd并不能。

5.复制文件用什么命令?

cp -r test/ test1

-r 的作用:

递归复制

如果 test 是一个目录,那么 -r 表示将 test 目录中的所有内容,包括子目录和文件,一并复制到 test1 中。

没有 -r 时,cp 不能直接复制目录,会报错。

保留结构

使用 -r 时,复制的文件和目录结构会保持与源目录一致。

6.查看文件内容有哪些命令可以使用?

vi         文件名#编辑方式查看,可修改
cat        文件名 #显示全部文件内容
more       文件名 #分页显示文件内容
less       文件名 #与 more 相似,更好的是可以往前翻页
tai1       文件名 #仅査看尾部,还可以指定行数
head       文件名 #仅查看头部,还可以指定行数

7.怎么向屏幕输出带空格的字符串,比如“hello world"?

echo hello world

8.移动文件用哪个命令?改名用哪个命令?

mv source_file(文件) dest_file(文件)        #将源文件名 source_file 改为目标文件名dest_file
mv source_fi1e(文件) dest_directory(目录)   #将文件 source_file 移动到目标目录dest_directory中

移动文件到其他目录:

mv file.txt /home/user/Documents/

移动整个目录:这个my_folder是个目录

mv my_folder /home/user/Backup/

重命名文件:

mv old_name.txt new_name.txt

重命名目录:

mv old_folder new_folder

9.删除文件用哪个命令?如果需要连目录及目录下文件一块删除呢?删除空文件夹用什么命令?

删除目录及其内容:rm -r 我们常说的 rm -rf * 删库跑路 也就是这个哈哈。。

rm -rf [目录名或文件名]

10.查找文件内容用哪个命令? *

这个命令是我们嵌入式工作中经常用到的,如下为范例:

grep test *file          #在当前目录中,查找后缀有 fi1e 字样的文件中包含 test 字符串的文件,并
打印出该字符串的行
grep -r update /etc/acpi #査找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件
grep -v test *test*grep  #查找文件名中包含 test 的文件中不包含test 的行

如下为实例:

在当前目录查找

grep -r "LCD_driver" .

在整个目录及子目录中搜索:

grep -r "LCD_driver" /path/to/directory

仅输出文件名而不显示内容:

grep -rl "LCD_driver" /path/to/directory

忽略大小写搜索:

grep -i "lcd_driver" *.c

11.查找文件用哪个命令? *

这个也是我们工作常用的了。

find . -type f -name "*lcd_drivce*"    # 指定查找类型为普通文件(f 表示文件)
find . -type d -name "*lcd_drivce*"    # 查找目录
find . -name "*.c"     #将当前目录及其子目录下所有文件后缀为.c的文件列出来
find . -ctime -20      #将当前目录及其子目录下所有最近20天内更新过的文件列出

12.cat命令

cat -n textfile1 
#把 textfile1 的文档内容加上行号后输入到屏幕
cat -n textfilel> textfile2 
#把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里
cat -b textfilel textfile2 >> textfile3 
#把 textfilel 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里
cat /dev/nu1l>/etc/test.txt     
#清空 /etc/test.txt 文档内容

 

13.预处理

gcc -E test.c -o test.i    #把预处理的结果导出到test.i文件

14.编译为汇编代码

gcc -S test.i -o test.s     #编译器将test.i翻译成汇编语言,并将结果存储在test.s文件中。

15.汇编

gcc -c test.s -o test.o     #将汇编代码编译为目标文件(.0)但不链接

16.链接

gcc test.o -o test     #将生成的目标文件test.o生成最终的可执行文件test

17.一步到位编译

gcc test.c -o test     #将源文件test.c编译链接为可执行文件test

18.多文件编译

gcc test1.c test2.c -o test

19.警告处理

gcc -w test.c -o test        # 忽略编译时的警告
gcc -wa11 test.c -o test     # 编译后显示所有警告
gcc -werror test.c -otest    # 在产生警告的地方停止编译

20.常用的GDB调试指令

21.加载/卸载驱动

insmod/modprobe   
rmmod

加载驱动模块:

insmod <模块名.ko>

例:insmod my_driver.ko

需要确保模块文件在当前路径或提供完整路径。

卸载驱动模块:

rmmod <模块名>

例:rmmod my_driver

自动加载驱动模块:

modprobe <模块名>

例:modprobe my_driver

会根据依赖关系自动加载所需模块。

22.Linux驱动如何查看驱动模块中打印信息?

dmesg

使用 dmesg 查看内核日志:

dmesg | grep <关键字>

例:查看包含 "my_driver" 的日志:

dmesg | grep my_driver

实时查看内核打印信息:

tail -f /var/log/kern.log
journalctl -k -f

在驱动代码中打印信息: 驱动程序中可以通过 printk 打印信息:

printk(KERN_INFO "This is a debug message: %d\n", value);

23.如何查看内核中已有的字符设备的信息?

lsmod 和modprobe,lsmod可以查看模块的依赖关系,modprobe在加载模块时会加载其他依赖的模块。

查看字符设备的主次设备号:

cat /proc/devices

查看所有设备文件:

ls -l /dev

匹配特定字符设备:

ls -l /dev | grep <设备名>

24.如何查看正在使用的有哪些中断号?   

cat /proc/interrupt
           CPU0       CPU1       
  0:     100000     150000   IO-APIC-edge      timer
  1:       3000       2000   IO-APIC-edge      i8042
  9:          0          0   IO-APIC-fasteoi   acpi

第一列:中断号。

第二、三列:各 CPU 上的中断计数。

最后一列:中断所属的设备名称。

实时查看中断变化:

watch -n 1 cat /proc/interrupts

http://www.kler.cn/a/523298.html

相关文章:

  • Luzmo 专为SaaS公司设计的嵌入式数据分析平台
  • Openfga 授权模型搭建
  • 用C++编写一个2048的小游戏
  • DeepSeek API 的获取与对话示例
  • Flutter解决macbook M芯片Android Studio中不显示IOS真机的问题
  • DAY02 final关键字、static关键字、接口
  • 个人通知~~~
  • 【愚公系列】《循序渐进Vue.js 3.x前端开发实践》030-自定义组件的插槽Mixin
  • Julius AI 人工智能数据分析工具介绍
  • Ubuntu20.04 磁盘空间扩展教程
  • 安卓入门四十三 转场动画
  • LSQL导入器的使用教程-保姆级
  • 中国现代篆刻
  • 全面解析文件上传下载删除漏洞:风险与应对
  • OpenBMC:编译
  • (2023 RESS ) Federated multi-source domain adversarial adaptation framework
  • C++中类成员的访问权限
  • 网络管理功能实现:从协议到工程实践
  • C++ Lambda 表达式的本质及原理分析
  • 大话特征工程:2.特征组合与描述
  • Games104——游戏引擎中物理系统的基础理论算法和高级应用
  • 03:Heap代码的分析
  • DeepSeek Janus-Pro-7B:AI图像生成新突破,体验网址直达!
  • 利用ue5制作CG动画笔记
  • 制造企业的成本核算
  • Ruby Dir 类和方法详解