自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

转载 学习内存屏障

看了下面的博客和评论:记录对内存屏障的理解。https://blog.csdn.net/world_hello_100/article/details/50131497【1】编译器屏障:优化等级O2,O3时可能改变指令实际执行顺序,引入指令和代码逻辑不符问题。解决方法1:添加编译器 barrier:解决方法2:还可以使用 volatile 这个关键字来避免编译时内存乱序访问(而无法避免后面要说的运行时内存乱序访问)。在 Linux 内核中,提供了一个宏 ACCESS_ONCE 来避免编译器对连续

2022-06-23 01:37:54 172

原创 svn创建本地仓库

svn创建本地仓库

2022-05-30 02:49:37 833

转载 动态库连接-符号冲突-全局符号介入

全局符号介入,加载动态库动态符号冲突,符号忽略

2022-04-12 03:05:19 618 1

原创 ubuntu20.04登录桌面后卡主

问题现象是:ubuntu 20.04 登录到桌面后卡主,鼠标和触控板不能用,按键不能用,键盘灯会亮。详细现象:1,卡主的界面不是输入密码的界面,而是输入密码正确,进入桌面后。2,其他现象,长按电源键关机重启,有时会遇到,登录界面后10秒左右的时间是可以交互的,可以按ctrl+alt+T开启终端,但是过一会还是会卡主。3,极少数出现没有卡主,但是屏幕亮度不能调节。正常情况是会识别到两个显卡,会有个显卡状态文件 /sys/kernel/debug/vgaswitcheroo/switch但是屏幕亮

2022-04-03 00:35:13 2219

原创 platform driver

注册struct platform_driverplatform_driver_register driver_register ->bus_add_driver // add a driver to a bus; -> driver_attach // 查找bus下所有设备,找与其匹配的 -> bus_for_each_dev(drv->bus,NULL,drv,__driver_attach) -> __driver_attach /

2022-03-23 02:01:51 435

原创 MISC device

杂项设备MISC杂项设备共用主设备号10,MISC就是最简单的字符设备驱动。misc 驱动通常嵌套在platform 总线驱动中,实现复杂的驱动。所有的MISC设备驱动的主设备号都是10,不同的设备使用不同的次设备号。MISC驱动的核心就是初始化struct miscdevice 结构体。struct miscdevice { int minor; /* 子设备号 需要用户填写*/ const char *name; /* 设备名字 需要用户填写*/ const struct file_o

2022-03-23 01:26:23 520

转载 Arm架构异常中断处理流程

转载:https://blog.csdn.net/eleven_xiy/article/details/71157618?spm=1001.2014.3001.5506转载:https://www.cxymm.net/article/michaelcao1980/43309325中断模式的stack准备ARM处理器有多种process mode,例如user mode(用户空间的AP所处于的模式)、supervisor mode(即SVC mode,大部分的内核态代码都处于这种mode)、IRQ m

2022-03-20 14:01:04 1889

原创 libasan使用和遇到的问题

介绍Address Sanitizer(ASan)是一个快速的内存错误检测工具。它非常快,只拖慢程序两倍左右(比起Valgrind快多了)。它包括一个编译器instrumentation模块和一个提供malloc()/free()替代项的运行时库。从gcc 4.8开始,AddressSanitizer成为gcc的一部分。当然,要获得更好的体验,最好使用4.9及以上版本,因为gcc 4.8的AddressSanitizer还不完善,最大的缺点是没有符号信息。编译在gcc 4.8以上,编译器中带有lib

2021-09-16 00:43:01 9097

原创 valgrind 2.30编译和遇到的问题

一 介绍:valgrind 默认使用 memcheck 去检查内存问题。valgrind被设计成非侵入式的,它直接工作于可执行文件上,因此在检查前不需要重新编译、连接和修改你的程序。要检查一个程序很简单,只需要执行下面的命令就可以了valgrind --tool=tool_name program_name比如我们要对ls -l命令做内存检查,只需要执行下面的命令就可以了valgrind --tool=memcheck ls -l不管是使用哪个工具,valgrind在开始之前总会先取得对你的程序

2021-09-16 00:07:31 2917

原创 ASAN 内存错误问题检查工具

ASAN(AddressSanitizer的缩写)是一款面向C/C++语言的内存错误问题检查工具,可以检测如下内存问题:使用已释放内存(野指针)堆内存越界(读写)栈内存越界(读写)全局变量越界(读写)函数返回局部变量内存泄漏https://blog.csdn.net/weixin_39094034/article/details/108796315...

2021-09-12 17:17:37 470

原创 busybox启动后tab没有命令补全

busybox启动后tab没有命令补全问题,busybox V1.7.0 编译完成后没有命令补全,使用不顺手1,一开始以为是shell的问题,发现busybox V1.7。0 里的shell只有ash hush lash msh,且ash是最完整的shell,并没有bash.2,后来在busybox里搜索completion ,发现存在Tab completion位于-> Busybox Settings-> Busybox Library Tuning-> Command

2021-09-12 17:01:07 384

原创 Linux通过nfs挂载根文件系统失败:VFS: Unable to mount root fs via NFS, trying floppy.

Linux通过nfs挂载根文件系统失败:VFS: Unable to mount root fs via NFS, trying floppy.报错如下:IP-Config: Complete: device=eth0, addr=192.168.1.113, mask=255.255.255.0, gw=192.168.1.1, host=192.168.1.113, domain=, nis-domain=(none), bootserver=192.168.1.11

2021-09-05 12:46:00 2776 5

原创 汇编指令arm

汇编指令:label ,=label的区别,ADR和LDR的区别1,ldr xd, @把label的值加载带Xdldr xd,= @把label的地址加载到xdNote: There are two similar operations for LDR:LDR Xd, <label> Returns in Xd the value at <label>LDR Xd, =<label> Returns in Xd the address of <labe

2021-08-07 12:28:23 127

原创 加载地址和运行地址

加载时地址就是程序放置的地址,在存储媒介中的地址。运行地址就是程序定位的绝对地址,也即在编译连接时定位的地址。SECTIONS { first 0x00000000 : {head.o init.o} second 0xB0004000 : AT(2048) {led.o}}head.o放在0x00000000地址开始处,init.o放在head.o后面,他们的运行地址也是0x00000000,即连接和存储地址相同(没有AT指定);led.o放在2048(是AT指定的,...

2021-07-11 13:27:46 861

原创 环境搭建和点亮led

1,点亮led

2021-07-05 01:50:53 228

原创 KEIL编译器优化导致的问题。

参考https://blog.csdn.net/u012363005/article/details/51814126KEIL的默认优化等级8级,我要缩小size,改为9级。代码size缩小了,但时软件复位无效了。解决方法如下:1,使用汇编替代C。2,把出问题的C文件的优化等级改回以前的优化等级。void SW_Reset(void){/* there will ...

2019-03-04 17:25:42 2695

转载 C语言变量长度在32位和64位处理器上的关系

from:   https://blog.csdn.net/andylauren/article/details/52150648  理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。常用数据类型对应字节数  可用如sizeof(char),sizeof(char*)等得出 32位编译器:      char :1个字节    ...

2018-05-09 11:10:45 796

转载 COAP 协议格式

from https://blog.csdn.net/xukai871105/article/details/451670690 前言    CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备...

2018-05-07 17:33:49 1640

转载 GPS nmealib学习笔记

from:http://blog.csdn.net/xukai871105/article/details/128344210.nmealib简介    nmealib是一个基于C语言的用于nmea协议的开源库。虽然nmea体积小巧,但是却具备了不少功能。    分析NMEA语句并把结果保存在合适的C语言结构体中。    除了解析NMEA语句之外,还可以产生NMEA语句。    支持多种NMEA语...

2018-05-07 16:15:06 400

原创 8051 RAM/ROM结构

8051 提供片内128Byte存储器,地址空间00H-7FH。RAM 其中00H-1FH 是4组通用工作存储区,每个区包含8个编号为R0-R7的寄存器。共32字节:4(区)×8(R0-R7)其中1FH-2FH 是位寻址空间,映射位地址00H-7FH。(共16Byte:映射到00H-7FH,8×16(bit))。位寻址空间的操作有单独的位指令。第三个去为数据缓冲区,多用于堆栈,8051单片机的堆栈...

2018-04-25 11:06:26 5911 1

原创 Cortex-M3 杂记

cortex-M3 架构【1】r0-r12 :通用寄存器组r13 :堆栈指针寄存器。有两个堆栈指针,(MSP,PSP)。r14:连接寄存器。LR,当使用BL(branch and link)指令时,自动填充LR的值。r15:程序计数器。(LSB必须为1,表明在Thumb状态下执行,若为0,则试图转入ARM模式,将产生一个fault异常)。【2】特殊功能寄存器组xPSR:状态寄存器,包含三部分。(A...

2018-04-23 10:09:38 268

原创 UCOS-iii 杂项

保护共享资源的机制

2018-04-23 09:38:13 87

原创 UCOS-iii 软件定时器

定时器是内核对象之一,类型是 OS_TMR 。NextPtr和PrevPtr都是指针, 用于将定时器链接成一个双向链表 。下图是一个空的定时器轮转表,下图是定时器轮转表,表中有两个定时器,定时器被放在哪里取决于计算出的spoke值,    spoke  = (OS_TMR_SPOKE_IX)(p_tmr-&gt;Match % OSCfg_TmrWheelSize);    p_spoke = &...

2018-04-20 15:50:23 401

原创 UCOS-iii 任务调度

任务调度的时机:1、当前任务给其他任务发信号,结束时调用。    任务调用提交服务函数OS???Post(), 发送信号量或消息给其它任务时调度发生2、任务调用OSTimeDly()或OSTimeDlyHMSM();    如果延时参数不是0,调度发生。调度会在该任务被放入挂起队列后马上执行。3、任务所等待的事件发生或超时。4、任务取消挂起时调度发生。5、新任务被创建时发生。6、任务被删除时发生。...

2018-04-19 14:05:11 663

原创 UCOS-iii 中断处理

UCOS-iii 的中断处理有两种方式:1、立即处理中断:当中断发生时,程序的PC指针被赋值中断服务程序ISR,关中断,中断服务程序处理完事件,开中断。中断返回。2、延迟处理中断:当中断发生时,程序的PC指针被赋值中断服务程序ISR,关中断,在中断处理程序中不直接处理中断源,而是在优先级为0的中断服务任务中登记,并就绪中断服务任务,然后开中断。从中断返回。延迟处理的目的是为了减小关中断的时间。把中...

2018-04-19 13:24:30 1191

原创 ucOS-ii 与 iii的比较

【1】就绪表的最高优先级位置不同,在UCOS-ii 就绪表中最高优先级的位置在右边,        ptcb-&gt;OSTCBY             = (INT8U)(prio &gt;&gt; 3);          /* Pre-compute X, Y, BitX and BitY     */        ptcb-&gt;OSTCBX             = (INT8U...

2018-04-19 11:32:40 4825

原创 UCOS-iii 就绪表

UCOS-iii 就绪表有OSPrioTbl[ ],OSRdyList[prio]两个表。就绪队列包含两个数据结构:位映像表保存了哪个优先级中有任务待运行,优先级列表中包含了这该优先级下等待运行的任务。OSPrioTbl[ ] :bitmap记录相应的优先级bit位是否有任务进入就绪状态。如果对应的优先级任务进入就绪状态,就将该任务添加到OSRdyList[prio]中。OSRdyList[pri...

2018-04-19 10:44:51 581

原创 ucos ii 总结

UCOS-ii 中的五张表:Mem表:OSMemFreeListTCB表:OSTCBFreeListQueue表OSQFreeListEvent表:OSEventFreeList//Timer表:OSTmrFreeList(可能不是这张表,或许是和FLAG信号量集有关的表)【-1】内存操作首先建立OS_MEM 类型的大分区链表,然后建立一个二维数组,将这个二维数组初始化为小分区(OSMemCrea...

2018-04-13 15:07:41 224

转载 异常发生时硬件上的操作

转自:http://www.51hei.com/bbs/dpj-39846-1.html发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、Returnaddress、PSR、LR寄存器依次入栈,其中Return address即为发生异常前PC将要执行的下一条指令地址。注意:寄...

2018-04-12 09:47:36 186

转载 转载 STM32的启动汇编/startup_stmf10x_hd.s

1.前言 任何一款CPU,无论是多简单的,譬如我们大学阶段学习的51单片机,都是需要底层的相应的汇编指令来进行启动 此款芯片,我们写的C语言能够直接编译下载就能够直接运行,就是这些汇编阶段的代码调用我们的main函数来进 行工作的,现在我们就来讲解一下这些汇编代码完成那些牛逼的设置,针对于stm32来讲解 2. 启动文件完成的工作 (1):初始化堆栈指针SP (2):初始化程序计数器指针PC (3...

2018-04-08 17:47:54 404

转载 STM32 I/O 作为外部中断输入

 I/O口作为外部中断。general  purpose input and outputSTM32 的每个 IO口都可以作为中断输入,要把 IO口作为外部中断输入,有以下几个步骤:1) 初始化 IO 口为输入。这一步设置你要作为外部中断输入的 IO 口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要带上拉,或者下拉电阻。否则可能导致中断不停的触发。在干扰较大的地方,...

2018-04-08 17:03:03 16982

原创 STM32裸板程序的编译

声明:由于本人知识有限,错误之处,欢迎指正。STM32 的开发环境是keil uvision5(也称MDK5)。这个软件集成了很多功能,但它不适合学习。 因为它屏蔽了很多内部细节。比如编译,链接的细节。接下来介绍不使用MDK5来编译裸板程序。在linux下,编译的基本步骤如下:1)    arm-linux-gcc  -c  -nostdlib  source -o dest2)    arm-l...

2018-04-03 10:02:05 701

ARMv8-A,A64指令集,arm官方手册

ARMv8 -A指令集,ISA_A64_V88A

2022-06-23

DUI0801K_armasm_user_guide.pdf

Arm Compiler Version 6.6 armasm User Guide ARM 汇编手册,从arm documentation 下载的

2021-08-07

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除