
linux
文章平均质量分 76
坛城
沉心修炼,早日筑基
展开
-
gdb监视
GDB(GNU Debugger)是一个功能强大的调试工具,可以用于在程序运行时监视变量的值,包括在特定条件下触发断点。要监视一个地址上的值并带有条件,你可以使用。命令可以用于监视任何内存地址上的值,但要小心不要访问无效的地址,以避免导致程序崩溃。此外,设置太多的监视点可能会影响程序的性能,所以只在需要时使用它们。在实际情况中,如果怀疑一个进程中的变量被踩内存了,但是不知道什么时候会被踩,就可以用下面的方法进行debug。这将监视地址0x12345678上的32位整数值。原创 2023-09-15 19:52:33 · 2151 阅读 · 0 评论 -
likely和unlikely的用法
在实际使用中,应该基于性能分析和测试结果来确定哪些分支更有可能和不太可能执行,并相应地使用这些宏。如果错误地使用这些宏,可能会导致性能下降,因此建议在优化代码之前进行充分的性能分析。它们通常与条件语句的分支一起使用,以指示哪些分支更有可能执行,哪些分支更不可能执行。在一般的应用程序中,使用这些宏的性能影响可能不明显,因此在普通应用程序中使用它们可能没有太大的必要。例如,在Linux内核中,通常会将likely用于可能出现的快速路径,而将unlikely用于可能出现的慢速路径,以帮助编译器更好地优化代码。原创 2023-09-15 15:02:15 · 754 阅读 · 0 评论 -
linux C语言 socket的server、client 实现
你可以将上述代码分别保存为 server.c 和 client.c,并分别编译成可执行文件,然后在两个不同的终端窗口中运行它们。如果你使用的是不同的编程语言或开发环境,编译步骤可能会有所不同。通常,你需要指定套接字的类型(例如,SOCK_STREAM表示TCP套接字)和地址族(例如,AF_INET表示IPv4地址族)。在实际应用中,不可能像实例一中,server只接收一次,client只向server发送一次。// 关闭套接字, 只要关闭client,server端的recv就不会阻塞了,返回0!原创 2023-09-13 09:32:13 · 2293 阅读 · 0 评论 -
《C语言编程》__asm__ volatile 内联汇编
__asm__ volatile 内联汇编原创 2021-12-31 16:47:58 · 12003 阅读 · 0 评论 -
Linux(十四)定时器实现消抖(EPIT)
目的:前面在用KEY的时候,在中断中为了省事儿使用延时法进行按键消抖,但其实是不应该的。因为中断本身的意义就在于抢占CPU去执行一些比较紧急的任务,如果一个高优先级的中断服务函数加延时霸占CPU的资源,那么其他任务就全部干不了了。这就也丧失了中断的意义了,本来是“借”变成了“霸占”。也就是说,在中断服务函数中尽量不要用延时、等待信号量、或执行一些时间特别长的操作。其实我们想消抖,目...原创 2020-04-30 09:59:21 · 515 阅读 · 0 评论 -
Linux(十三)定时器系统
EPIT定时器EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的定时器还有很多其它的功能,比如输入捕获、 PWM 输出等等。但是 I.MX6U 的 EPIT 定时器只是完成周期性中断定时的,仅此一项功能!至于输入捕获、 PWM 输出等...原创 2020-04-29 13:48:42 · 683 阅读 · 0 评论 -
Linux(十二)中断系统
STM32 的中断系统主要有以下几个关键点:①、 中断向量表。②、 NVIC(内嵌向量中断控制器)。③、 中断使能。④、 中断服务函数。中断向量表中段向量表就是说明都有什么中断,这些中断服务函数在哪个位置。这些中断服务程序(函数)在中断向量表中的位置是由半导体厂商定好的,当某个中断被触发以后就会自动跳转到中断向量表中对应的中断服务程序(函数)入口地址处。中断向量表放在整...原创 2020-04-29 12:55:40 · 1046 阅读 · 0 评论 -
Linux(十一)工程管理
和STM32时的开发一样,软件讲层级分明,工程管理是必不可少之前我们将所有的文件、中间文件、执行文件等等都放在工程的根目录下,十分乱杂。所以仿照STM32的风格,将各种文件按照功能和层级进行分类放置,使用起来就会更规整。之前:整理之后:因为有些文件不放在根目录下了,所以用原有的编译器就找不到某些文件了,因此需要重新整理Makefile其实 Makefile 的重点工作就...原创 2020-04-29 12:38:01 · 227 阅读 · 0 评论 -
Linux(十)移植I.MX6U SDK
这是ARM的内核分布我之前常用的STM32F103系列是Cortex-M1;STM32F407、STM32F429是Cortex-M4系列,而NXP的I.MX6U是Cortex-A7内核。============================================================================NXP的SDK这个 SDK 包就类...原创 2020-04-29 12:35:13 · 407 阅读 · 0 评论 -
Linux(八)C语言版LED,从汇编到C
启动文件 startup_stm32f10x_hd.s 这个汇编文件就是完成 C 语言环境搭建的,当然还有一些其他的处理,比如中断向量表(中断向量表的设置是在system_stm32f1xx.c,可能处理是在startup_stm32f10x_hd.s下)等等。当 startup_stm32f10x_hd.s 把 C 语言环境初始化完成以后就会进入 C 语言环境==============...原创 2020-04-29 12:26:02 · 447 阅读 · 0 评论 -
Linux(七)I.MX6U启动方式详解
I.MX6U 支持多种启动方式以及启动设备,比如可以从 SD/EMMC、NAND Flash、QSPI Flash等启动。用户可以根据实际情况,选择合适的启动设备。不同的启动方式其启动方式和启动要求也不一样,比如上一章中的从 SD 卡启动就需要在 bin 文件前面添加一个数据头,其它的启动设备也是需要这个数据头的。本章我们就来学习一下 I.MX6U 的启动方式,以及不同设备启动的要求当...原创 2020-04-29 12:14:38 · 671 阅读 · 0 评论 -
Linux(六)Makefile的作用和实现
按照STM32的经验,代码写完之后,我们得编译生成.bin然后烧写至flash中。那么I.MX6U是这样吗?我们现在已经写好了led.s,如何生成.bin,又如何烧写至I.MX6U?led.s就是汇编语言写的文件,程序写完后还需要编译,也就是生成执行文件。还不算完,要是烧写在板子上还要生成.bin,我们需要用到Makefile。那么Makefile是干啥的呢?字面意思make文件,...原创 2020-04-29 11:40:43 · 639 阅读 · 0 评论 -
Linux(五)I.MX6U的管脚命名规则、了解寄存器
前言:前面我们介绍了汇编语言的作用,实际上就是C环境还没准备好时,我们只能用汇编去进行一些必要的操作,例如DDR、SP指针的初始化、跳转指令等。具体该如何实现这些功能,并且点亮LED呢?I.MX6U的管脚命名规则STM芯片的管脚是用PA_ping0、PB_ping1、来命名。但是I.MX6U是用GPIO1~GPIO5 共五组 GPIO的管脚功能来命名,例如:IOMUXC_SW_MUC_...原创 2020-04-29 10:46:09 · 1225 阅读 · 0 评论 -
Linux(四)汇编基础知识、为什么要用汇编
为什么要学习汇编Cortex-A 芯片一上电 SP 指针还没初始化, C 环境还没准备好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境,比如初始化 DDR、设置 SP指针等等,当汇编把 C 环境设置好了以后才可以运行 C 代码。所以 Cortex-A 一开始肯定是汇编代码,其实STM32 也一样的,一开始也是汇编,以 STM32F103 为例,启动文件startup_stm32...原创 2020-04-29 10:09:19 · 790 阅读 · 0 评论 -
Linux (二)常用的shell
rm 是移除mv是更改名称和移动cd 是去用户根目录下cd /是去根目录cd ../去上一层目录下pwd 查看当前路径sudo 用root身份执行chmod 更改文件权限,还是用数字的方法更方便 chmod 766 text.txt关机是 poweroff重启是 reboot创建Makefile是用touch命令touch Makefile编译是 g...原创 2020-04-28 19:08:21 · 111 阅读 · 0 评论 -
Linux(三)初探Cortex-A7架构、I.MX6U
I.MX6UL 使用的是 Cortex-A7 架构I.MX6U-ALPHA 开发板配套的 I.MX6U 核心板,采用 MCIMX6Y2CVM05AB(528MHz)或MCIMX6Y2CVM08AB(800MHz,实际 792MHz)作为主控 CPU,这两款主控都是工业级的。自带 32KB 的 L1 指令和数据 Cache、 128KB 的 L2 Cache,集成 NEON,集成双精度硬件浮...原创 2020-04-28 19:08:03 · 1556 阅读 · 0 评论 -
Linux(一)环境搭建
一、虚拟机虚拟机的使用是实验用,方便学习使用,但是这不是最终的使用习惯。虚拟机一定不要用破解版的,最好任何的软件以后都不要用破解版的当然没钱的话可以下载注册机,但是!!!一定不要在不认识的网站和渠道下载软件!!!弹窗你懂的!!!虚拟机和Ubuntu镜像我之前有,所以没用原子给的,反正安装卸载五六遍,实在是不稳定容易卡死。后来用原子给的,果真没有卡死过了,很稳定。二、初探ubuntu...原创 2020-04-28 18:53:09 · 177 阅读 · 0 评论 -
将U盘制作成fedora启动盘后无法恢复U盘的正常使用,我是这样解决的
我有一个破旧的U盘,8GB,最近学习使用Linux,将U盘制作成了Fedora的启动盘。学习一番后想恢复U盘的使用,插上主机后,计算机识别不出来盘符。这下我想格式化都不行呢,于是参照网上的建议,解铃还须系铃人,用制作启动盘的工具Fedora media writer恢复U盘。可是不成功,然后我用系统自带的磁盘管理和甚至去windows的cmd中对磁盘进行恢复操作,均失败了。一顿操作后,...原创 2019-08-07 10:27:57 · 3233 阅读 · 2 评论 -
图形/文本界面安装CentOS 6.8系统详解(来源:Linux社区 作者:xuweitao)
最近在学习centos,学习安装linux就是学习linux的开端。鸟哥说没有安装过十遍linux不要说学会了linux。这篇文章就是详细讲解了安装Linux的原理,大家一起学习一下图形/文本界面安装CentOS 6.8系统详解(来源:Linux社区 作者:xuweitao)...转载 2019-08-07 15:28:02 · 291 阅读 · 0 评论