嵌入式linux
嵌入式linux ARM
wwwlyj123321
这个作者很懒,什么都没留下…
展开
-
linux signal 机制
ref:Linux操作系统学习笔记(十六)进程间通信之信号 | Ty-Chen's Homehttps://www.cnblogs.com/renxinyuan/p/3867593.html当执行kill -9 PID时系统发生了什么 -原创 2023-11-22 22:36:22 · 157 阅读 · 0 评论 -
arm中的数据对其小结
All accesses to data in memory can be classified into the following categories:Natural alignment, for example, on a word boundary at 0x1000. The ARM compiler normally aligns variables and pads structures so that these items are accessed effic...原创 2020-11-24 20:46:25 · 1090 阅读 · 0 评论 -
hexdump与winhex
一、hexdumphexdump是Linux下的一个文件查看工具,它可以将二进制文件输出为ASCII、八进制、十进制、十六进制格式进行查看。当然了,“Linux中一切皆文件”,因此,我们可以对磁盘进行直接读取。通过lsblk或者fdisk -l命令查看盘符。 语法 hexdump [选项] [文件]… 常用选项 -n length:格式化输出文件的前length个字节 -C:输出规范的十六进制和ASCII码 -s:从偏移量(以字节为单位)开始输出 使用示例:.原创 2020-11-21 15:48:42 · 543 阅读 · 0 评论 -
ARM指令集与Thumb指令集
1、Thumb指令集来源ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。而为了解决代码长度的问题,ARM体系结构又开发了一种新的指令体系,就是Thumb指令集,称之为T变种。Thumb是ARM体系结构的扩展(thumb不是一个完整的体系结构,不能指望处理器只执行thumb指令集而不支持arm指令集)。它从标准32位ARM指令集抽出来的36条指令格式,重新编成16位的操作码。这能带来很高的代码密度,例如:在1K的存储空间中,可以放32条ARM指令,就可以放64条Thumb指令,原创 2020-10-24 10:42:13 · 4942 阅读 · 0 评论 -
ARM主流编译器介绍
目前,针对于 ARM 平台的主流编译器主要有以下三者:比较 ARMCC IAR GCC for ARM 命令行工具 随IDE发布,也独立提供 仅随其IDE发布,不独立提供 独立提供 开发商 ARM IAR ARM、Linaro、Mentor 支持的平台 Windows、Linux Windows Windows、Linux、Mac(部分) 配套 IDE Keil MDK、ARM Development Stud原创 2020-10-23 15:32:16 · 1218 阅读 · 1 评论 -
__builtin_expect函数解析
1.引言在很多源码如Linux内核、Glib等,我们都能看到likely()和unlikely()这两个宏,通常定义如下:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)可以看出这2个宏都是使用函数__builtin_expect()实现的,__builtin_expect()函数是GCC的一个内建函数(build-in function)...原创 2020-08-10 10:39:05 · 4668 阅读 · 1 评论 -
do{...}while(0)语句在宏定义的妙用
在linux内核中常常会看到do{} while(0)这样的语句,do{} while(0)内的语句只能执行一次,那么加不加do{} while(0)有什么区别呢?或者说加了do{} while(0)语句有什么作用呢?1.帮助定义复杂的宏以避免错误举例来说,假设你需要定义这样一个宏:#define DOSOMETHING() foo1(); foo2();这个宏的本意是,当调用DOSOMETHING()时,函数foo1()和foo2()都会被调用。但是如果你在调用的时候这么写:if(转载 2020-08-08 15:39:01 · 667 阅读 · 0 评论 -
makefile中判断文件是否存在的几种方法
有两种方式:1、调用shell命令if [ -e FILE ]; then .......; fi注:文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真-f filename 如果 filename为常规文件,则为真-L filename 如果 filename为符号链接,则为真-r filename 如果 filename可读,则为真-w filename 如果 filename可写,则为真...原创 2020-07-29 15:46:41 · 27181 阅读 · 1 评论 -
makefile进阶(1)——两种不同的依赖类型:normal prerequisites和order-only prerequisites
一、normal prerequisites和order-only prerequisites的区别通常,如果规则中依赖文件中的任何一个被更新,则规则的目标相应地也应该被更新。有时,需要定义一个这样的规则,在更新目标(目标文件已经存在)时只需要根据依赖文件中的部分来决定目标是否需要被重建,而不是在依赖文件的任何一个被修改后都重建目标。为了实现这一目的,相应的就需要对规则的依赖进行分类,一类是在这些依赖文件被更新后,需要更新规则的目标;另一类是更新这些依赖的,可不需要更新规则的目标。我们把第二类称为:“o原创 2020-07-28 14:16:29 · 1016 阅读 · 0 评论 -
makefile--patsubst和notdir函数
notdir : 去除路径patsubst :替换通配符实例:在当前目录下,建立a.c、b.c、c.c、d.c 4个文件,在ddr目录下,建立ddra.c、ddrb.c、ddrc.c、ddrd.c 4个文件.一个简单的makefile如下:src=$(wildcard *.c ./ddr/*.c)dir=$(notdir $(src))obj=$(patsubst %.c,%.o,$(dir) ) all: @echo $(src) @echo $(dir) @ech.原创 2020-07-23 16:10:36 · 722 阅读 · 0 评论 -
makefile--wildcard关键字
我们首先来看一个简单的makefile,该文件的目的是将该文件夹下的所有.c文件编译链接为可执行文件test。我们可以这么写:all: armcc -o test a.c b.c c.c d.c现在我们采用定义变量的方式进行简化(*是通配符,*.c表示所有的.c文件)SRC = *.call: armcc -o test ${SRC}注意红色方框框出来的区别!!这个地方SRC变量并没有展开为当前路径下的所有.c文件的列表,这是因为:1、Makefile中的变量.原创 2020-07-23 15:52:15 · 1019 阅读 · 0 评论 -
Linux进阶命令之——cut命令
1 命令格式head 选项... [文件]...2 命令功能cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。(实际上可以理解为提取文本列)如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。3 命令选项-b --bytes=LIST,以字节为单位进行选取。LIST表示选取的范围,见下表 -c --characters=LIST,以字符为单位进行选取。LIST表示选取的范围,见...原创 2020-07-20 10:43:59 · 885 阅读 · 0 评论 -
Linux进阶命令之——head与tail命令
一、head命令1.1 命令格式head [选项] ... [文件]...1.2 命令功能head用来将文件的开头打印至标准输出中,默认head命令打印其相应文件的开头10行。1.3 命令选项-n 显示文档开始的前K行 -c 显示文档开始的前K个字节 -q 隐藏文件名 -v 显示文件名 --help 打印帮助信息 --version 打印版本号 1.4 实例在liyijun文件夹下存在文件fw_exp.c...原创 2020-07-17 17:50:59 · 502 阅读 · 0 评论 -
Linux进阶命令之——grep命令
ref:https://blog.csdn.net/sinat_42724379/article/details/100893694https://jingyan.baidu.com/article/c74d6000b6d8140f6a595d25.html原创 2020-07-16 14:50:20 · 216 阅读 · 0 评论 -
shell编程-循环语句
一、for语句for循环语句有两种格式,分别如下:(一)for in语句for var in list do commandsdonelist代表要循环的值,在每次循环的时候,会把当前的值赋值给var(变量名而已,随意定), 这样在循环体中就可以直接通过$var获取当前值了。list里面的值默认以空格分割,可以通过环境变量IFS控制实例1: 1 #!/bi...原创 2018-08-14 16:04:36 · 202 阅读 · 0 评论 -
shell编程-使用echo创建文件并追加内容
echo命令常用的用法是在终端打印字符串。我们还可以将字符串打印到我们自定义的文件中,即重定位。例1:exbot@ubuntu:~/liyijun$ echo "this is my test" > a.txtexbot@ubuntu:~/liyijun$ cat a.txt this is my test我们使用“>”符号重新创建一个a.txt文档,并且将字符串打...原创 2018-08-14 16:29:26 · 34330 阅读 · 0 评论 -
shell编程入门(bash)
一、背景知识(1)什么是shell?高大上的解释,往往让人摸不住头脑。一句话概括就是:shell编程就是对一堆Linux命令的逻辑化处理。(2)为什么需要shell?譬如我们要在linux下创建一个文件a.c,可以touch a.c 但是如果我现在是用在linux下创建100个文件,分别为a1.c a2.c.....a100.c 如果这时候还是手工去命令行下执行命令创建也可以,但...原创 2018-08-14 10:29:05 · 401 阅读 · 0 评论 -
shell编程-参数传递
一、传参介绍(1)C语言中可以通过main函数的argc和argv给程序传参(2)shell程序本身也可以在调用时传参给他。在shell程序内部使用传参也是使用的一些特定符号来表示的,包括:$#表示调用该shell时传参的个数。($#计数时只考虑真正的参数个数)$0、$1、$2·····则依次表示传参的各个参数。如果参数超过9个,那么就只能通过${}来获取了, 例如获取第10个参数...原创 2018-08-14 19:09:43 · 1090 阅读 · 0 评论