草庐IT

修改嵌入式 ARM Linux 内核映像中的文件系统

zImage是编译内核后在arch/arm/boot目录下生成的一个已经压缩过的内核映像。通常我们不会使用编译生成的原始内核映像vmlinux,因其体积很大。因此,zImage是我们最常见的内核二进制,可以直接嵌入到固件,也可以直接使用qemu进行调试。当然,在32位嵌入式领域还能见到uImage,这是在zImage首位增加64B的头,描述映像文件类型、加载位置、内核大小等信息。有些嵌入式设备的文件系统直接嵌入到内核中,这种内置文件系统的机制被称为ramdisk/initramfs,如果只是使用extract-vmlinux/binwalk解压固件,释放大量shell脚本和配置文件,是很容易做

交叉编译工具链arm-linux-gnueabihf的安装-ubuntu 20.04

前面下载安装步骤参考该博主的文章http://t.csdn.cn/ZbjFX另:本人对所遇到的环境变量的配置问题作补充1.修改环境变量建议直接在.bashrc文件作修改,修改方式相同(vi:视自己的编辑器而定)sudovi~/.bashrc2.修改环境变量后,可以直接用source命令使环境变量生效source~/.bashrc3.为什么建议直接修改.bashrc文件因为我在修改profile文件后,环境变量生效,但是命令行的用户名等颜色高亮显示会消失;并且重启终端后,又需要再source一下profile。但是将环境变量添加至.bashrc则不会出现这两个问题。(为什么有这两个问题我也不清楚

【ARM 嵌入式 编译系列 11 -- GCC __attribute__((packed))详细介绍】

文章目录__attribute__((packed))介绍上篇文章:ARM嵌入式编译系列10.3–GNUelfutils工具小结下篇文章:ARM嵌入式编译系列11.1–GCCattribute((aligned(x)))详细介绍attribute((packed))介绍__attribute__((packed))是GCC编译器的一个特性,它可以用于阻止编译器为结构体或联合体的成员进行对齐优化,从而使其尽可能地小。默认情况下,编译器可能会在结构体的成员之间添加填充字节,以确保特定类型的数据在内存中按照适当的边界对齐,以提高处理器访问数据的效率。但是,这可能会导致结构体比实际需要的更大。使用__

节能延寿:ARM Cortex-M微控制器下的低功耗定时器应用

嵌入式系统的开发在现代科技中发挥着至关重要的作用。它们被广泛应用于从智能家居到工业自动化的各种领域。在本文中,我们将聚焦于使用ARMCortex-M系列微控制器实现低功耗定时器的应用。我们将详细介绍在嵌入式系统中如何实现低功耗的定时器功能,并附上代码示例。嵌入式系统低功耗定时器的重要性在许多嵌入式系统应用中,低功耗定时器是至关重要的。例如,在一些电池供电的设备中,我们需要定期唤醒系统来执行特定任务,但又要确保在空闲状态时能够最大程度地降低功耗,以延长电池寿命。低功耗定时器为我们提供了一种高效且灵活的方式来实现这一目标。ARMCortex-M微控制器的定时器ARMCortex-M微控制器是广泛使

【ARM AMBA AXI 入门 8 - AXI 协议中 RID/ARID/AWID/WID 信号】

文章目录背景介绍1.1.1AXI3信号列表1.1.2AXI3信号列表1.2传输顺序1.2.1读顺序1.2.2写顺序1.2.3互连线中ID信号的扩展上篇文章:ARMAMBAAXI入门7-AXI协议中的独占访问使用背景介绍下篇文章:ARMAMBAAXI入门9-AXI总线AxPROT与安全之间的关系背景介绍如果SoC中是多主机多从机的结构,支持AIXOutstanding及AXIout-of-order传输特性(见前文介绍)会极大的提高总线互连的利用率,主机可以对不同地址或从机进行连续访问,而从机返回数据的先后可以不按照主机的发出事务顺序。有时当多笔传输发生时,就需要保证每一笔都能按照预期的顺序来完

VSCode+CMake+Arm GNU Toolchain搭建GD32开发环境

GD32CMakeexample一个串口收发简单例子。https://github.com/Huffer342-WSH/GD32_CMake_Example可以下载该工程,稍微了解一点cmake就可以简单修改直接使用。GD32CMakeexample使用到的工具编译与烧录命令行VSCode调试配合VSCode的marus25.cortex-debug插件实现调试功能RTT使用方法marus25.cortex-debug手动连接注意事项交叉编译工具链设置链接脚本启动文件从零开始搭建工程使用到的工具交叉编译器:gcc-arm-none-eabi-10.3-2021.10-win32构建工具:Nin

基于ARM+FPGA的驱控一体机器人控制器设计

目前市场上工业机器人,数控机床等多轴运动控制系统普遍采用运动控制器加伺服驱动器的分布式控制方式。在这种控制方式中,控制器一方面完成人机交互,另一方面进行NC代码的解释执行,插补运算,继而将计算出来的位置指令通过轴组模块下发给各个伺服驱动器。下发过程通常是由现场总线完成,总线周期为4ms或者更小。伺服驱动器接收位置指令,位置细分后通过三环控制最终驱动电机。在这个过程,通常是一个伺服驱动器驱动一个电机,六关节机器人就需要六个驱动器完成,各个伺服驱动器各自独立地完成位置控制功能,从而实现机器人末端达到指定位置。各个伺服驱动器的数据交互需要依靠总线完成,但是现场总线通信受通讯速率限制不能完成一些实时数

STM32 以太网netconn接口TCP收发数据分析

🔥基于正点原子STM32F4扩展例程,网络实验8NETCONN_TCP客户端和网络实验9🔥基于正点原子STM32F4扩展例程,网络实验8NETCONN_TCP客户端和网络实验9🔥基于正点原子STM32F4扩展例程,网络实验8NETCONN_TCP客户端和网络实验9目录一、接收数据二、发送数据  接上一篇分析的接收数据流程,当一个真实的数据通过以太网TCP接收进来或者通过以太网TCP发送出去时,数据是如何存放的,存放在哪里,在此将这些天的想法记录下来。欢迎批评指正。一、接收数据  接收数据的流程正如上一篇介绍的一样,在low_level_input函数中将接收到的数据通过ETH_Rx_Packe

玩转 PI 系列-看起来像服务器的 ARM 开发板矩阵-Firefly Cluster Server

前言基于我个人的工作内容和兴趣,想要在家里搞一套服务器集群,用于容器/K8s等方案的测试验证。考虑过使用二手服务器,比如DellR730,还搞了一套配置清单,如下:DellR7303.5尺寸规格硬盘CPU:2686v4*2内存:16g*8存储:480Gintelssd系统盘+6tsas希捷*2个数据盘RAID卡:h730卡电源:单电750w盘架满价格大约是3130元再来套服务器机柜。..但是考虑到功率和噪音太大了,家里也没有适合放服务器的这么大的地,最终放弃了。😂也考虑过用单片的arm开发板,但是需要搞好几片,然后编译系统、刷机、装合适的壳子、找电源线和网线,再接入家庭网络。..一台一台折腾,

(十三)STM32——串口通信(UART)

目录学习目标内容通信方法并行通信串行通信通信方向通信方式 UART特点串口参数通信流程寄存器USART_SRUSART_DR USART_BRR过程代码运行结果运行结果遇到的问题总结 学习目标        本节我们要学习的的是STM32的通信部分,主要介绍UART(通用异步收发器),是一种异步、全双工的通信方式。内容        首先,我们先来介绍一下通信的基本知识,之前在51单片机的学习中我们也接触过UART,在此就不做详细介绍,感兴趣的同学请看51单片机基础——串口通信 。通信方法并行通信  传输原理:数据各个位同时传输。  优点:速度快  缺点:占用引脚资源多串行通信  传输原理:数