首页
学习
活动
专区
工具
TVP
发布

嵌入式与Linux那些事

专栏作者
192
文章
256000
阅读量
35
订阅数
【调试】sysRq键使用方法
SysRq键是一个魔术案件,只要在内核没有完全卡死的情况下,内核都会相应SysRq 键的输入,使用这些组合键都可以搜集包括系统内存使用、CPU任务处理、进程运行状态等系统运行信息。
嵌入式与Linux那些事
2023-02-13
5660
【调试】GDB使用总结
在shell下敲gdb命令即可启动gdb,启动后会显示下述信息,出现gdb提示符。
嵌入式与Linux那些事
2023-02-13
1.4K0
一些不错的单片机,嵌入式Linux书籍推荐
以汽车行业为例,物联网技术的出现带来了颠覆性的影响。无人驾驶、车联网,借助于传感器、低延迟网络、人工智能算法,解放了人力,提升了安全性。类似地,在智慧家居、工业互联网、安防监控等领域,物联网技术都在渗透并改造行业。
嵌入式与Linux那些事
2023-02-13
1.8K0
如何成为高级嵌入式硬件工程师?
将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控制器芯片实现,而目前的这种串口控制器芯片早已集成到CPU内部,还有PC机有显卡,而多数嵌入式处理器都带有LCD控制器,但其种意义上就相当于显卡。
嵌入式与Linux那些事
2023-02-13
7700
如何解读内核的oops
这里能够简要的告诉是什么问题触发了oops,显然是由于访问非法地址00000000异常。如果是由代码直接调用BUG()/BUG_ON()一类的,还能给出源代码中触发的行号。
嵌入式与Linux那些事
2022-12-01
1.7K0
深入理解Aarch64的内存管理
本文介绍了AAR64内存管理中最重要的内容--内存转换,解释了虚拟地址是如何翻译为物理地址的,翻译表的格式,以及如何管理TLBS。
嵌入式与Linux那些事
2022-09-23
1.2K0
单片机的程序结束后都干嘛去了?
对于嵌入式系统,如果没有运行RTOS,那么程序开发中的主函数main()需要通过某种机制使其永远愉快的运行下去,它没有终点。如果想从main函数中退出,具体干什么是由所使用的C语言编译器决定的。
嵌入式与Linux那些事
2022-06-14
4200
新手经常忽略的嵌入式基础知识点,你都掌握了吗?
为解决各种问题,人们发明了不计其数的机器。嵌入式设备种类繁多,从嵌入火星漫游机器人的计算机到为操纵核潜艇导航系统的系统,不一而足。
嵌入式与Linux那些事
2022-05-24
3620
推荐一个好用的i2c调试小工具
在嵌入式开发仲,有时候需要确认硬件是否正常连接,设备是否正常工作,设备的地址是多少等等,这里我们就需要使用一个用于测试I2C总线的工具——i2c-tools。
嵌入式与Linux那些事
2022-04-08
1.4K0
函数调用时栈是如何变化的?
大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。
嵌入式与Linux那些事
2021-12-17
3K0
干货 | 结构体、联合体嵌套使用的一些实用操作
结构体、联合体是C语言中的构造类型,结构体我们平时应该都用得很多。但是,对于联合体,一些初学的朋友可能用得并不多,甚至感到陌生。我们先简单看一下联合体:
嵌入式与Linux那些事
2021-09-03
2.9K0
19.DM9000网卡驱动移植
SD0~15: 16位数据线,有CMD引脚决定访问类型 CMD: 命令线,当CMD为高,表示SD 传输的是数据,CMD为低表示传输的是地址 INT: 中断引脚,接在2440的GPF7脚上 IOR#: 读引脚,接在2440的nOE脚上 IOW#: 写引脚,接在2440的nWE脚上 CS#: 片选,放在2440的bank4的片选上面
嵌入式与Linux那些事
2021-05-20
9530
嵌入式裸板开发之中断与异常(一)
 1.ARM对于异常(中断)的使用过程   (1)初始化:设置中断源让它产生中断;设置中断控制器(屏蔽,优先级);设置CPU总开关(使能中断)   (2)执行程序   (3)产生中断   (4)CPU每执行完一条指令,都会检查有无中断/异常产生。   (5)发现有中断/异常产生,开始处理。对于不同的异常,会跳去不同的地址执行程序。这些地址上,只是一条跳转指令,跳去执行某个函数。   (6)这些函数做:保存现场(各类寄存器);处理异常,再调用不同的函数;恢复现场   PS:中断程序怎么被调用?CPU强制跳转到某个地方,在该地方放置跳转指令跳转到其他函数,其他函数来做(6)中的事情。  2.CPU模式(mode)状态(state)与寄存器  (1)ARM CPU七种模式:USR(用户模式),SYS(系统模式),异常模式。其中,异常模式又分为UND(未定义模式),SVC(管理模式),ABT(中止模式),IRQ(中断模式),FIQ(快中断模式)。除了USR模式外,其他模式之间都可以随意切换,被称为特权模式,可以直接操作CPSR寄存器进入其他模式。
嵌入式与Linux那些事
2021-05-20
6920
程序计数器PC详解
   冯 ·诺伊曼计算机体系结构的主要内容之一就是“程序预存储,计算机自动执行”!处理器要执行的程序(指令序列)都是以二进制代码序列方式预存储在计算机的存储器中,处理器将这些代码逐条地取到处理器中再译码、执行,以完成整个程序的执行。为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条取指指令的地址。程序计数器(PC )正是起到这种作用,所以通常又称之为‘指令计数器’。CPU总是按照PC的指向对指令序列进行取指、译码和执行,也就是说,最终是PC 决定了程序运行流向。故而,程序计数器(PC )属于特别功能寄存器范畴,不能自由地用于存储其他运算数据。   在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU 按照 PC的指示从内存读取第一条指令(取指)。当执行指令时,CPU自动地修改PC 的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数(指令字节数),使 PC总是指向下一条将要取指的指令地址。由于大多数指令都是按顺序来执行的,所以修改PC 的过程通常只是简单的对PC 加“指令字节数”。   当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的目 标地址。处理器总是按照PC 指向取指、译码、执行,以此实现了程序转移。   ARM 处理器中使用R15 作为PC,它总是指向取指单元,并且ARM 处理器中只有一个PC 寄存器,被各模式共用。R15 有32 位宽度(下述标记为R15[31:0],表示R15 的‘第31位’到‘第0位’),ARM 处理器可以直接寻址4GB 的地址空间(2^32 = 4G )。   (解释什么是字对齐什么是半字对齐)存储器是计算机中用于记忆数据信息的电子装置,它通过记忆“高/低”电平记忆“1/0”能记忆 1 位“1/0”数据的电子单元,称之为存储元,计算机中的存储器通常将每8 个这样的存储元组成一个单元,称之为字节,字节是处理器访问存储器的最小单位。ARM 处理器对存储器空间的访问分辨率以字节为最小单位;ARM 处理器还支持 16bit 数据(2 字节)的存储器访问和 32bit数据(4 子节)的存储器访问。在ARM 中将32 位的数据称之为‘字’,将 16 位的数据称之为‘半字’。    ARM 处理器在对于“字”/ “半字”数据进行访问时,对数据的存储格式是有要求的。要求被访问的“半字”必须存放在存储器紧邻的两个字节单元,并且首字节地址必须能被2整除,这样存储的 16bit 数据称为 ‘半字对齐’存储数据,16bit 数据这样的存储方式称为 ‘半字对齐’存储。类似的,ARM 处理器在进“字”数据访问时,要求被访问的“字”必须 存放在存储器紧邻的4 个字节单元,并且首字节地址必须能被4 整除,这样存储的32bit 数 据称为‘字对齐’存储数据,32bit 数据这样的存储方式称为‘字对齐’存储。   能被2 整除数据的二进制表示,其最低位一定是‘0’;能被4 整除数据的二进制表示,其最低两位一定是‘00’。ARM 体系要求32 位长的ARM 指令在存储器中必须字对齐存储,16 位长的 Thumb 指令必须半字对齐存储。因此,在ARM 状态下,R15 的值总是能被4 整除,也就是R15 寄存器的最低2 位总是 0;Thumb 状态下,R15 的值总是能被2 整除,也就是R15 寄存器的最低位总是0。
嵌入式与Linux那些事
2021-05-20
1.3K0
《深入理解计算机系统》(CSAPP)读书笔记 —— 第五章 优化程序性能
  2.编写出编译器能够有效优化以转换成高效可执行代码的源代码(例如,在C语言中,指针运算和强制类型转换使得编译器很难对它进行优化)。
嵌入式与Linux那些事
2021-05-20
9110
《深入理解计算机系统》(CSAPP)读书笔记 —— 第三章 程序的机器级表示
  在之前的《深入理解计算机系统》(CSAPP)读书笔记 —— 第一章 计算机系统漫游文章中提到过计算机的抽象模型,计算机利用更简单的抽象模型来隐藏实现的细节。对于机器级编程来说,其中两种抽象尤为重要。第一种是由指令集体系结构或指令集架构( Instruction Set Architecture,ISA)来定义机器级程序的格式和行为,它定义了处理器状态、指令的格式,以及每条指令对状态的影响。大多数ISA,包括x86-64,将程序的行为描述成好像每条指令都是按顺序执行的,一条指令结束后,下一条再开始。处理器的硬件远比描述的精细复杂,它们并发地执行许多指令,但是可以采取措施保证整体行为与ISA指定的顺序执行的行为完全一致。第二种抽象是,机器级程序使用的内存地址是虚拟地址,提供的内存模型看上去是一个非常大的字节数组。存储器系统的实际实现是将多个硬件存储器和操作系统软件组合起来。
嵌入式与Linux那些事
2021-05-20
1.9K0
《深入理解计算机系统》(CSAPP)读书笔记 —— 第一章 计算机系统漫游
  接下来的计划是补充下操作系统和计算机组成原理相关的知识。从《深入理解计算机系统》这本书开始吧,系统学习下《深入理解计算机系统》这本书,还有9个Lab可以做下,以便加深理解。初步计划一周一章(不知道行不行),争取在放寒假前做完这些。
嵌入式与Linux那些事
2021-05-20
5780
38.Linux应用调试-初步制作系统调用(用户态->内核态)
  1)首先用户态的write()函数会进入glibc库,里面会将write()转换为swi(Software Interrupt)指令,从而产生软件中断,swi指令如下所示:
嵌入式与Linux那些事
2021-05-20
9430
汇编指令-CMP、TEQ
  格式: teq oprd1,oprd2   TEQ指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运算结果更新CPSR中条件标志位的值。该指令通常用于比较操作数1和操作数2是否相等。(EOR指令也是实现异或运算,只是不更新CPSR)
嵌入式与Linux那些事
2021-05-20
1.2K0
汇编指令-MOV与ldr区别
  1.可以寄存器与寄存器之间传递数据   2.可以把立即数移动到寄存器中(常数不能超过32位)
嵌入式与Linux那些事
2021-05-20
1.1K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档