Linux shell 常用命令 一、命令行说明1、命令格式command [-options][argument]命令名 选项 参数2、查询命令:1、man 帮助查找linux系统中自带的操作手册用q可以直接退出man手册man 3 printf命令找不到的话,需要执行 sudo apt-get install manpages-posix-dev,man后面的3是查询man手册的第几个章节内容2、命令 --help 多用“-h”或者“--help”选项获取帮助 查找命令帮助 --help和
指令集、架构、处理器、内核,芯片之间的关系 一、指令集,架构:指令集主要是指Cpu硬件和软件之间的接口描述,它本质上是一段二进制机器码,cpu只能识别机器码,但是机器码是一串无意义的字符串,程序员很难看看懂这些语句,用它来开发软件,所以后面就发明了汇编语言,汇编语言本质上跟机器码一一对应的,现在有很多不同版本的汇编语言,本质上就是有不同的指令集,指令集可以简单的分为复杂指令集和精简指令集。架构:架构主要是指某一个处理器所使用的具体指令集,比如说m6ull,他是基于ArmV7架构的,就是指它是使用armV7指令集,在大部分场合,架构等于指令集
蓝牙协议层 GATT ,GAP,ATT 之间的关系 一、ATT (attribute protocol),数据交互协议ATT是由一群ATT命令组成,就是上文所述的request(请求)和response(响应)命令,ATT也是蓝牙空口包中的最上层,也就是说,ATT就是大家对蓝牙数据包进行分析的最多的地方。ATT命令,正式称谓ATT PDU(Protocol Data Unit,协议数据交互单元)包括4类:读,写,notify(通知)和indicate(指示)。这些命令又可以分成两种:如果它需要response,那么会在相应命令后面加上...
蓝牙 服务,特性,描述符,属性条目 一个Profile中可包含一个或者多个服务;一个服务可包含一个或者多个特性(逻辑上的集合);一个特性至少包含两个属性条目:一个用于声明,其他用于存储属性值。一个属性条目包含 handler、type、permissions、uuid一、profile(简介)profile是一个大家经常见到的英文单词,但是总感觉领会不到这个词的内涵。Profile,英文本义就是脸的侧面轮廓,这里大家一定要注意,脸的轮廓不等于脸本身(脸本身是非常复杂和细致的),但profile本身是对脸的一
蓝牙4.0和5.0的区别 一、蓝牙4.0蓝牙无线技术是使用范围最广泛的全球短距离无线标准之一,蓝牙4.0版本涵盖了三种蓝牙技术,即传统蓝牙、高速蓝牙和低功耗蓝牙技术,将三种规范合而为一。它继承了蓝牙技术在无线连接上的固有优势,同时增加了高速蓝牙和低功耗蓝牙的特点。这三个规格可以组合或者单独使用。蓝牙4.0规范的核心是低功耗蓝牙(Low Energy),即蓝牙4.0BLE。该技术最大特点是拥有超低的运行功耗和待机功耗,蓝牙低功耗设备使用一粒纽扣电池可以连续工作数年之久。蓝牙4.0技术同时还拥有低成本、向下兼容、跨厂商互操作性强等特
8051单片机的内核的结构及运行过程解析 一、内核框架1.ROM:只读存储器,单片机的只读存储区大多用于存储程序固又称程序存储器。51单片机是EPROM,所谓的EPROM是可擦除的只读存储器。可以把原来的程序擦除了,再写一个新的进去。断电后是可以保存的,数据存储器(RAM)是不能保存的。RAM只能在程序执行的时候不断地重新存储定义的变量。如int x,int y可以通过code这个指令来将定义的变量放在ROM,而不是RAM中,节省RAM资源2.RAM:随机存取存储器,用于存储定义的变量等,速度快51单片机的RAM存储
FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘ keil 报 FCARM - Output Name not specified, please check 'Options for Target - Utilities'可能是添加文件时文件类型选择错了,选择了 Image file(*.*)解决方案,将添加的文件删除掉,然后选择ALL添加就可以了。...
MPU和MMU、MPU和MCU的区别 一、MMU vs MPU内存是现代计算机最重要的组件之一。因此,它的内容不能被任何错误的应用所篡改。这个功能可以通过MMU(Memory Management Unit)或者MPU(Memory Protection Unit)来实现。尽管这个两个东西有同样的基本功能,但是它们之间还是存在一些不同。MMU被认为是比MPU更先进的设备。MMU能完成MPU的所有工作,并且它还具备MPU没有的一些高级特性。MMU具备而MPU不具备的特性包括:缓存控制,总线仲裁,bank切换。这些特性是更复杂的计算机所需要
项目复盘步骤 一、什么是复盘通俗地讲,就是对你所做事情的反思,可以是优点也可以是缺点。笔者进行复盘的出发点,一方面是想在一个项目中,有什么东西可以沉淀下来,下次做事情的时候可以直接用;二是这次有哪些地方做得不够好的地方下次有更大的进步空间。朝着这两个方向去提高自己。所谓复盘,原本是一个围棋术语,指在下完一盘棋后重新摆一遍,看哪里下得好、哪里不好,然后进行分析和推演。简单来讲就是对你所做之事的反思。发现了优点,就寻思着怎么固化、强化、规模化;发现了缺点,则可以追本溯源然后对症下药。复盘是回顾、反思、探究、提升的
C语言函数的可重入性 一、不可重入函数。在函数中如果我们使用静态变量了,导致产生中断调用别的函数的 过程中可能还会调用这个函数,于是原来的 静态变量被在这里改变了,然后返回主体函数,用着的那个静态变量就被改变了,导致错误。这类函数我们称为不可重入函数。在 嵌入式系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料的后果。不可重入函数在实时系统设计中被视为不安全函数。满足下列条件的函数多.
C语言 printf 的用法总结(完善中) printf函数是一个“可变参数函数”,其函数的参数的个数和类型都是可变的,每一个参数的输出格式都有对应的格式说明符与之对应,从格式串的左端第1 个格式说明符对应第 1 个输出参数,第 2 个格式说明符对应第 2 个输出参数,第 3个格式说明符对应第 3 个输出参数,以此类推。其中,格式说明符的形式如下(方括号 [] 中的项为可选项):%[flags][width][.prec][length] type/*用中文标识如下:*/%[标志符][宽度][精度][长度]类型符1、类型符(t
用之前使用正常的keil工程调试程序时,一直卡在 0x00000000 的解决方案 如图所示,一个用了挺久的工程,之前调试都正常,最近调试发现代码进入调试后不直接进入main函数,堆栈一直卡在0x00000000,汇编窗口显示在某个不确定的位置运行,但是不用调试时程序执行正常。这种情况下很可能是keil的工程出现了问题,新建一个工程,然后把所有代码copy到新工程就可以解决问题了。...
keil 分散加载文件 keil 分散加载文件link.sct文件内容; *************************************************************; *** Scatter-Loading Description File generated by uVision ***; *************************************************************LR_IROM1 0x08001000 0x0000
ISP、IAP、ICP三种烧录方式的区别 我们常见的MCU / CPU 代码烧录方式主要有以下三种:一、ICP(In Circuit Programing):在电路编程,可通过CPU的Debug Access Port 烧录代码,比如ARM Cortex的Debug Interface主要是SWD(Serial Wire Debug)或JTAG(Joint Test Action Group);二、ISP(In System Programing):在系统编程,可借助MCU厂商预置的Bootloader 实现通过板载UART
stm32070 ota 步骤 一、整体思路项目使用STM32F070,需要通过IAP进行固件升级,将flash分为4块,最小一块为boot,第二块为app区,第三块为backups区,此区域大小与app区大小一致,第四块为data区,存放一些固定数据。二、添加链接文件; ************************************************************* ; *** Scatter-Loading Description File generated by uVision..
如何 用 keil 读出芯片中的程序并保存? 背景,在某次用flash模拟eeprom时,突然发现程序不跑了,怀疑是擦写flash时将code区擦除了,遂开始一系列测试,打算将芯片中的读出来查看。1、设置keil工程(1)将硬件调试中的Load Application at Startup 去掉勾选(2)将flash 配置中的芯片擦写改为不要擦写,将Program 、Verify、 Reset and Run等的勾选去掉。2、进入芯片仿真,并点击全速运行(注意,此处必须点击全速运行,否则memory中的数据会不准,实测是
C语言中Volatile与Register关键字 目录区别:volatile的用途:Register的用途:区别:register:这个关键字请求编译器尽可能的将变量存在 CPU 内部寄存器中而不是通过内存寻址访问以提高效率。注意是尽可能,不是绝对。你想想,一个 CPU 的寄存器也就那么几个或几十个,你要是定义了很多很多 register 变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你。volatile:的本意是“易变的”,由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RA..
stm32 堆栈存放分析 一、理论数据存放数据在SRAM中的存放情况,最下层为静态数据区,再上层是堆区,最上层是栈区,二、栈存放:(1)栈底地址:在map文件中搜索STACK,可以看到该工程的栈底地址为0x200002a0(2)栈顶地址:在map文件中搜索__initial_sp,可以看到该工程的栈顶地址为0x200003a0(3)栈占用大小:根据上面的地址信息,则可以推算该工程的栈大小为 0x200003a0 - 0x200002a0 = 0x0100在启动文件中查到栈分配大