
笔记
Hawen-嵌入式
格物致知,知行合一
展开
-
基于CMSIS的外设/设备驱动框架
我们要与Driver_SPI.h对接的驱动文件在安装的芯片软件包里。涉及的文件有CMSIS目录下的,对外设驱动做了统一的驱动模型封装。下的DriverTemplates目录下只是做了驱动模型的壳子。这里就把我们上面的驱动接口对接到具体的实现函数。对此基于CMSIS驱动框架的大致结构就是如此。对于外设配置的相关驱动对接的引脚再。文件RTE_Device.h里。原创 2023-08-25 14:58:54 · 643 阅读 · 1 评论 -
MDK版本坑error: A1167E: Invalid line start
移植threadx时对于.s的汇编文件报了大量错误,到文件里查看是汇编文件中的注释使用的C的注释方法,导致大量报错。5.30的可以通过设置修改,我的版本是5.29按官方的修改还是报错,只能更新版本了。MDK官网查到原因,一个是版本问题,一个是设置问题,原创 2023-07-19 14:49:58 · 1293 阅读 · 0 评论 -
Linux下交叉编译工具链的安转和配置总结
一般在解压了交叉编译工具链后接下来的一步是添加环境变量,可以在用户的家目录下的隐藏文件.bashrc中的最后一行添加,也可以在系统启动的配置文件中添加,只要将其添加到PATH即可,也可以手动添加只不过每次关闭终端和开机要重新添加;比如在 /.bashrc中,添加exportPATH=/usr/local/arm/arm−2009q3/bin:PATH即可,也可以手动添加只不过每次关闭终端和开机要重新添加;比如在~/.bashrc中,添加export PATH=/usr/local/arm/arm-2009q原创 2022-06-26 14:03:34 · 1507 阅读 · 0 评论 -
undefined reference to `__aeabi_unwind_cpp_pr0 问题的解决
undefined reference to `__aeabi_unwind_cpp_pr0' 问题解决办法转载 2022-06-26 12:51:34 · 939 阅读 · 0 评论 -
Linux下shell脚本的编写
认识脚本脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。——摘自百度百科长用的脚本有shell、python…学习shell脚本的第一天掌握知识有:shell脚本的组成(如何编写一个shell脚本)shell脚本的执行(两种1.给予执行权限;2.解释器运行,不需要全权限shell中的符号shell中管道的使用shell的输入和输出shell中的变量shell数组shell中的运算(在shell中一般除理的是整型数据,浮点型需要经过处理)正文she原创 2022-05-14 23:17:23 · 2387 阅读 · 0 评论 -
shell脚本各$_变量的学习,后期会做进一步总结
变量 含义$0 当前脚本的文件名$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$# 传递给脚本或函数的参数个数。$* 传递给脚本或函数的所有参数。$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。$? 上个命令的退出状态,或函数的返回值。$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。注:shell和Makefile有相同的东西,但是含义不同,这个要加以区别原创 2022-05-10 14:01:50 · 159 阅读 · 0 评论 -
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?问题出现原因:直接切断虚拟机VM电源,导致资源一直被占用未被释放,下次关闭虚拟机之前还是得先关闭Ubuntu在关闭虚拟机问题解决:直接rm掉占用的进程即可命令如下:sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lock完成...原创 2022-04-05 10:55:40 · 1966 阅读 · 0 评论 -
WMware下与Ubuntu共享文件夹的设置
这个功能很早就学过了,有一些细节的东西以前没注意所以今天做的时候怀疑人生,VMware这个软件要建立一个共享文件名称,不然无效…设置方法在虚拟机的设置下启用共享文件夹细节:起一个名称,不然你在根目录下的mnt/hgfs下找不到文件的记得起名就正常了,mnt/hgfs下也找到了共享文件夹...原创 2022-04-03 15:33:57 · 987 阅读 · 0 评论 -
Linux下shell命令的一些常用快捷键
1.历史输入命令按键⬆️上一条输入的命令按键⬇️️下一条输入的命令2.光标移动按键⬅️ 向左一格按键➡️️ 向右一格按键ctrl+⬅️ 向左一个单词按键ctrl+➡️️ 向右一个单词按键ctrl+a 直接到头ahead按键ctrl+e 直接到尾end3.快捷键清屏按键ctrl+l清屏4.快速删除按键ctrl+c 忽略当前行按键ctrl+u 从光标位置开始,删除左方所有的字符,直到该行开始的位置按键ctrl+k 从光标位置开始,删除右方所有的字符,直到该行结束的位置5.登出系统原创 2022-03-10 13:21:29 · 835 阅读 · 0 评论 -
树莓派上手第一课:系统烧录,树莓派的配置,获取ip,ssh,远程桌面...
最近树莓派涨价挺高的,卖了我的3b+小赚了几百块钱,借了朋友的3b来写篇关于树莓派的入门博客吧,主要包括系统烧录,树莓派的配置,远程ssh,远程桌面…系统烧录准备一个树莓派,8g及8g以上的tf卡,键盘,鼠标,HDMI输出的显示屏去官网下载系统镜像,可以去官网下载或者一些社区,这里提供树莓派实验室:https://shumeipai.nxez.com/download#os去下载一个tf卡格式化工具:SD Card Formatter连接https://www.sdcard.org/downloa原创 2022-03-07 22:38:19 · 4753 阅读 · 0 评论 -
<uboot&Makefile>uboot下的文件目录结构和主Makefile的分析
关于uboot下的文件目录结构和主Makefile的分析uboot文件目录的分析(基于九鼎官方移植到Makefile的版本)文件夹:api:硬件无关的功能函数的API。uboot移植时基本不用管,这些函数是uboot本身使用的。api_examples:API相关的测试事例代码。board:board是板的意思,板就是开发板。board文件夹下每一个文件都代表一个开发板,这个文件夹下面放的文件就是用来描述这一个开发板的信息的。board目录下有多少个文件夹,就表示当前这个uboot已经被移植到多少转载 2021-10-19 17:52:21 · 271 阅读 · 0 评论 -
<Makefile>补充学习
早期在裸机部分学习了有关Makefile的阅读和编写,算是刚刚入门对Makefile有一个基本的了解,在这里对Makefile的知识做一些补充对Makefile的大概认识:是用来管理大型文件的一个工具,特别是工程文件较多时使用Makefile能够快速的对文件进行编译、链接、删除等等操作Makefile文件下三个重要的概念:目标、依赖、命令(1)目标就是我们要去make xxx的那个xxx,就是我们最终要生成的东西。(2)依赖是用来生成目录的原材料(3)命令就是加工方法,所以make通配符%和M原创 2021-10-18 17:18:13 · 83 阅读 · 0 评论 -
<shell脚本>循环语句和一些相关知识细节
shell中的循环结构for循环结构1.数字段形式for i in {1..100} do echo $i done2.详细列出for File in 1 2 3 4 5 do echo $File done3.查找循环for c_filename in `ls *.c` do echo $c_filename done5.语句循环for((i=1;i<100;i++)) do if((i%3= =0)) then ec原创 2021-10-17 12:59:08 · 147 阅读 · 0 评论 -
<计算机网络>小型网络的设计仿真
对于实现原创 2021-10-17 10:27:57 · 225 阅读 · 0 评论 -
<计算机网络>网络分析仪分析协议
网络分析仪分析协议1.捕获FTP数据包分析TCP/IP数据报格式。据捕获到的FTP数据包中的数据,分析TCP/IP协议头及以太网帧头。2.根据实验数据分析TCP/IP连接的三次握手及四次挥手的情况使用软件Wrieshark1. Display Filter(显示过滤器), 用于过滤2. Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表不同协议。3. Packet Details Pane(封包详细信息), 显示封包中的字段4原创 2021-10-15 13:35:32 · 587 阅读 · 0 评论 -
<shell脚本>初步接触shell与shell下的if语句
一.shell的介绍:1.shell是操作系统的终端命令行2.shell是一类编程语言又叫脚本语言常用的shell语言:sh、bash、csh、ksh、perl、python等(1)在linux下常用的脚本语言其实就是bash、sh;(2)perl、python这样的高级shell脚本语言,常用在网络管理配置等领域,系统运维人员一般要学习这些。(3)脚本语言一般在嵌入式中应用,主要是用来做配置。(一个复杂的嵌入式程序都是可配置的,配置过程就是用脚本语言来实现的)自然不会使用过于复杂的脚本语言特性原创 2021-10-14 22:12:58 · 249 阅读 · 0 评论 -
<uCOS学习>uCOS工程文件结构分析
最近在学有关实时操作系统,第一步先学习下uCOS首相还是先分析uCOS工程文件下的文件结构和一些入门所要知道的知识。keil下uCOS文件结构首先说明:uCOS2代码结构很不规范,还有很大提升空间,完全移植的工作量比较大BSP(board support packet)板级支持包CMSIS、STM32F10x_StdPeriph_Driver和stm32启动、库等有关文件uCOS-CPU、uCOS-LIB、uCOS-II与uCOS相关的文件库等这里分析BSPBSP.c文件里主要是对一些外原创 2021-10-12 21:42:47 · 380 阅读 · 0 评论 -
<计算机网络>FTP的创建与使用
昨天星期五上完了选修课计网的实验二,FTP的创建和使用,趁着周末放松的时间做个总结。相关概念**FTP协议:**即文件传输协议(File Transfer Protocol),是专门用来传输文件的协议。FTP的主要功能:(1)传输文件,包括上传和下载。(2)提供文件共享服务**FTP服务器:**在互联网上提供存储空间的计算机,依照FTP协议提供服务,用户登录后即可进行文件的下载。**FTP客户端:**访问FTP服务器享受其服务的计算机**FTP服务器的登录方式:**匿名登录、授权登录**F原创 2021-09-25 13:03:18 · 1175 阅读 · 0 评论 -
<微机与接口技术>51单片机的指令系统——算术运算和逻辑运算指令
51系统指令中算术运算有加、进位加…等指令逻辑运算有与、或、异或等…算术运算和逻辑运算指令对标志位的影响:PSW寄存器中有四个测试标志位:P(奇偶)、OV(溢出)、CY(进位)、AC(辅助进位)对于奇偶校验来说A中“1”的个数为奇则P=1,偶P=0;以A为目的操作数的算术运算和逻辑运算指令ADD:加ADDC:进位加SUBB:借位减ANL:与ORL:或XRL:异或源操作数只有两种:Rn、dir、@Ri、#data(立即数)以上的指令都是以A为目的操作数,例如:ADD A,@Ri以d原创 2021-09-20 14:03:33 · 2306 阅读 · 0 评论 -
<微机与接口技术>51单片机的指令系统——数据传送与交换指令
重要指令符号:Rn:当前工作寄存器组中的R0~R7Ri :当前工作寄存器组中的R0,R1rel:相对偏移量(在相对转移指令中使用,位一字节补码)寻址方式七种分别是立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址立即寻址:指令直接给出操作数的寻址方式;exm:MOV A,#80H直接寻址:指令直接给出操作数所在的地址的寻址方式;00H~7FH、片内RAM低128B和SFR;exm:MOV P0,#45H寄存器寻址:以通用寄存器的内容为操作数的寻址方式,通用寄存器包原创 2021-09-19 16:32:21 · 4964 阅读 · 0 评论 -
<计算机网络>ipconfig ping route netstat tracert
本学期任选课选修了一门计算机网络课程,趁着中秋节放假写下笔记。先对一些基本概念做下介绍一、基本概念IP地址:连接在Internet上的每一台主机或者路由器都有一个唯一的IP(32bit的标识符),包含网络号和主机号以下就是本人电脑的IP地址信息IP是由32bit标识符组成,四位0-255的数组成IPv6是啥?可以理解为随着科技发展电脑主机的数量在不断增加,慢慢的IPv4的32bit不足以给所有电脑分配到单独的IP,所以需要IPv6替代IPv4的下一代IP协议,IPv6的地址长度为128位,是原创 2021-09-19 14:42:40 · 552 阅读 · 0 评论 -
openmv使用总结笔记(基础篇)
不久前刚刚接触openmv这玩意,是很多大学生做项目和比赛经常用到的一个集成了主控芯片的摄像头,openmv具有使用简单、上手快的特点,搭载microPython,这玩意和python一样不用了解底层驱动,全部都封装好在库函数中,只管疯狂调用就好,趁着最近有时间也玩玩这玩意,做点笔记总结。入门环境的搭建:安装openmv这一官方开发环境,便于编程和调试以及相关的openmv串口驱动安装关于固件更新:固件意外丢失或者希望升级到较新版本固件时候,就需重新烧录固件,openmv上是一个STM32单片机,重新原创 2021-09-08 21:28:53 · 6947 阅读 · 0 评论 -
linux中gcc的使用
gcc使用编译链接:gcc filename -o objfilename 没有-o的话默认编译输出为a.out文件只编译不连接:gcc -c filename -o objfilename.o 输出只编译好的目标文件反汇编:objdump -d filename.o > filename.i 所得到的.i文件即为反汇编文件由.s得到.o: as -o 示例:as -o filename.o filename.s,即可由filename.s得到filename.oC源程序文件得到汇编文件原创 2021-08-14 15:10:37 · 96 阅读 · 0 评论 -
C++字符串string的学习
C++字符串string的使用有关string的C++库函数,有很多对字符串操作相关的库函数,这里主要是学习一些个别对字符串操作的方法,在以后的使用中可以通过查询库函数的方法来查询相关的对字符串操作的函数,相关的网站有http://www.cplusplus.com/reference/ https://zh.cppreference.com/w/%E9%A6%96%E9%A1%B5示例分析:#include<iostream> #include<string> //包含原创 2021-08-13 19:17:47 · 123 阅读 · 0 评论 -
C++中fstream读写文件
C++中fstream读写文件fstream介绍(1)fstream是C++标准库中面向对象库的一个,用于操作流式文件(2)fstream本质上是一个class,提供file操作的一众方法(3)有核心课程中应用编程里文件操作的基础,fstream的使用很简单 示例分析:#include<fstream> //首先要包含相关的头文件 #include<iostream> using namespace std; int main(void) { fst原创 2021-08-13 17:34:55 · 2612 阅读 · 0 评论 -
linux man手册下的一些小知识
写笔记的目的主要是方便记忆以及及时查看1.退出man手册:按下q键即可退出man手册2.man手册搜索:输入反斜杠后在输入要搜索的内容,其实类似于查找功能,找到有该内容的部分原创 2021-08-13 14:10:09 · 94 阅读 · 0 评论 -
<C++>的iostream标准输入输出
标准输出cout:cout的使用:cout为标准输出,对应stdoucout的定义位于std中使用<<(流操作符),可以多节连接(cout<<“hello C++”<<endl;)cout会根据变量类型输出,不像C语言那样要指定输出变量的数据类型cout涉及的头文件有 <bits/ios_base.h>out本质上是ostream(iostream的派生类)的一个对象流操作符<<本质上是左移运算符在iostream中的运算符重载co原创 2021-08-13 00:38:23 · 657 阅读 · 0 评论 -
<小知识>C语言中的反斜杠 \ 和百分号 %
今天学习C++的时候输出某个变量时想起了学习C时候的一些特殊的输出符,比如输出 %d由于之前没做总结搞混了转义符 \ 就想着在%前加上\发现不行经过百度再次搞明白了这两个字符的作用反斜杠 \作为转义字符,把比如\n转义成为换行\t为制表符等等,对此要输出\的话只需要在\前再加一个\即可百分号 %格式化输入输出符,想要输出 % 需要在 % 前加上 % 而不是 \...原创 2021-08-12 19:05:00 · 2139 阅读 · 0 评论 -
Linux下使用不同规范的C/C++标准编译程序
在初学嵌入式之际编译代码还是在Linux下的gcc编译C程序使用g++编译C++程序,在编译时有时需要指定不同时期的C标准需要我们在编译程序时做一些配置1.Linux下使用gcc编译C程序对C标准没有要求:直接使用 gcc 即可需要指定某一C标准: gcc name.c -std=cxx后面的xx是所要指定的C标准示例 gcc name.c -std=c99即表示使用99年的C语言规范编译该C程序C语言规范标准的版本有C89 AMD1 C99 C112.Linux下使用g++编译C++程原创 2021-08-12 16:23:43 · 971 阅读 · 0 评论 -
<C++学习总结>3.C++匿名命名空间嵌套匿名空间
C++匿名命名空间匿名命名空间的价值匿名命名空间中的符号纯文件内部使用,不需要被外部文件引用类似于全局变量和函数加static,一般在跨文件中使用到其特性嵌套命名空间#includevoid fun5(void);namespace NS{using namespace std;namespace NS2{void fun2(void){cout <<“fun2 printf\r\n”<< endl;}} void fun1(void){cout原创 2021-08-11 01:16:40 · 284 阅读 · 0 评论 -
<C++学习总结>2.namespace命名空间的学习
有关namespace命名空间的学习1.C++中的namespace的介绍首先命名空间是C++引入的一种解决全局变量和函数名冲突的机制2.namespace是使用方法namespace的三种使用方法方式一ace::Mutex mutex;方式二using ace::Mutex;Mutex mutex;方式三using namespace ace;Mutex mutex;这里是不是对第一个C++代码有点熟悉#includeusing namespace std;int main原创 2021-08-10 22:02:25 · 168 阅读 · 0 评论 -
Linux下交叉编译工具的安装与Makefile的使用
Ubuntu安装make1.自动安装在Linux 命令行下先获得root权限再执行以下命令apt install make2.手动安装方法二:(手动安装)1、查看make版本,在浏览器搜索:ftp://ftp.gnu.org/gnu/make/ 可进入下载页面2、进入文件存放路径:cd /home/tool3、下载安装包:wget http://ftp.gnu.org/gnu/make/make-3.81.tar.gz4、解压压缩包:tar -zvxf make-3.81.tar.gz原创 2021-08-10 21:46:07 · 2323 阅读 · 0 评论 -
Linux命令rm这个大坑
在Linux下使用rm这个命令一定要注意,不然哪天就从入门到删库跑路了(rm -rf /* )rm的基本使用:删除文件:rm 文件名执行rm 文件名 即可删除当前文件目录下所指定的文件了删除文件目录:rm 文件目录名 -rf / rm 文件目录名 -rrm -r 文件目录名 / rm -rf 文件目录名执行rm 文件名 -rf 即可删除当前文件目录下所指定的文件目录了rm目录的相关参数:-i 删除前逐一询问确认。-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认(强制属性)。-r原创 2021-08-10 14:33:30 · 520 阅读 · 0 评论 -
Linux下创建符号链接脚本
在Linux下有时候会需要创建符号链接,这里介绍通过脚本来实现符号链接的管理1.环境变量的意义环境变量就是操作系统的全局变量。每一个环境变量对操作系统来说都是唯一的,名字和所代表的意义都是唯一的。linux系统可以有很多个环境变量。其中有一部分是linux系统自带的,还有一些是我们自己来扩充的。我们这里涉及到的一个环境变量是PATH。PATH这个环境变量是系统自带的,它的含义就是系统在查找可执行程序时会搜索的路径范围。2.将工具链导出到环境变量export PATH=/usr/local/arm/a原创 2021-08-10 14:13:17 · 287 阅读 · 0 评论 -
《./rm-none-linux-gnueabi-gcc: 没有那个文件或目录》解决办法
问题:在安装S5PV210对应的交叉编译工具链arm-2009q3时,安装完毕后,使用命令./arm-none-linux-gnueabi-gcc -v进行测试,结果出现以下问题:但在目录中却能找到此文件:原因:64位的系统运行32位的程序需要安装32位的运行库。解决方法:在普通用户模式下执行 sudo apt-get install lib32ncurses5 lib32z1 命令或在特权模式下执行 apt-get install lib32ncurses5 lib32z1 安装32位依赖库。之后转载 2021-08-10 01:03:11 · 475 阅读 · 0 评论 -
S5PV210裸机第一个裸机实验点亮LED
作为一个嵌入式点灯工程师对点亮LED的能力不能少,下面是学习S5PV210的第一个裸机程序,点亮LED(1)了解硬件结构LED两端引脚的连接特性通过原理图的连接可以看出LED一端接到了VCC,一端接到了S5PV210的GPJ_3、GPJ_4、GPJ_5,所以配置IO口输出低电平进使LED被点亮;(2)阅读datasheet查询GPIO的相关寄存器通过数据手册SYSTEM可以找到GPIO介绍的部分,有关控制·GPIO的寄存器有GPJ0CON, GPJ0DAT, GPJ0PUD, GPJ0DRV,原创 2021-07-27 15:11:08 · 545 阅读 · 0 评论 -
geany带中文注释报错问题
刚入门python用的是geany这款编辑器,到注释带有中文时发现报错了,而在官方IDE则没这个问题,找了半天发现是未设置好编码的问题,具体解决方法是:文档->设置文件编码->Unicode->UTF-8即可...原创 2021-01-19 14:11:00 · 388 阅读 · 0 评论 -
STM32入门——工程的建立
关于STM32系列单片机在建立一个工程之前首先要先建立一个文件夹,把工程的各个模块打包好放到个文件夹中,有关如何建立一个工程文件这里就不做过多介绍,网上搜索一大堆,这里讲下建立工程文件夹下面的文件夹结构如何分配才比较规范:基于固件库工程的建立(1) 创建所需的工程文件夹,一个工程文件夹下包括几个子文件夹,利于工程的条理性(2) 添加固件库,可以到ST官方下载,相应的固件库包,包含到建立工程的文件夹中(3) 建立工程,把要用到的文件添加到工程中,依次添加 .c 和 .h 文件,配置好即可。一个工程文原创 2020-10-17 18:43:46 · 357 阅读 · 0 评论