嵌入式
孙光祖
电子爱好者,资源分享,设计共享,一起讨论设计。
展开
-
SecureCRT执行menuconfig 乱码解决方法
SecureCRT执行make menuconfig 乱码问题原创 2022-07-05 17:19:36 · 399 阅读 · 1 评论 -
第十三课: C数据结构--队列
什么是队列 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。队列的特征特殊的线性表,先进先出(FIFO).1)数据:对于非空的队列,表头没有直接前驱,表尾没有直接后继,其原创 2021-07-18 18:24:45 · 170 阅读 · 0 评论 -
U-BOOT移植
善用对比软件beyond选取官方源码版本下载,配置编译1)指定交叉编译工具链2)指定CPU和board(参考最类似配置)3)编译实现串口数据信息输出跟踪运行路径串口输出网卡移植寄存器地址参数设置FLASH移植...原创 2021-07-18 16:30:54 · 129 阅读 · 0 评论 -
u-boot启动流程
uboot启动流程如下:第一条指令如何执行从FLASH执行,cpu不需要初始化,从固定内存读代码;初始化硬件,先后顺序如何1)关看门狗2)关中断3)关mmu,初始化各个bank4)设置时钟频率5)进入board_init_f()函数 (初始化定时器,GPIO,串口等,划分内存区域)如何加载内核先将flash的代码拷到内存(自搬移uboot到内存)性能提升汇编语言和C语言开发的;汇编阶段:设置为SVC模式,关闭中断、mmu、看门狗基本硬件设备初始化 // 时钟、串口、flash原创 2021-07-18 13:17:21 · 156 阅读 · 0 评论 -
bootloader移植相关概念
1、基本概念什么是BootLoader?BootLoader是硬件启动的引导程序,是运行操作系统的前提;在操作系统内核或应用程序运行之前运行的一小段代码。对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境。在嵌入式系统中,整个系统的启动项加载任务通常由BootLoader来完成。BootLoader 的特点BootLoader不属于操作系统,一般采用汇编语言和C语言开发。需要针对特定的硬件平台编写。在移植系统时,首先为开发板移植BootLoader。BootLoader不但依赖于C原创 2021-07-18 12:30:23 · 234 阅读 · 0 评论 -
第十二课: C数据结构--链式栈
链式栈 链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。链式栈实现函数举例如下:typedef int datatype;typedef struct node{ datatype data; struct node *next;}listnode, *linklist;linklist linkstack_create();int linkstack原创 2021-06-27 20:48:30 · 192 阅读 · 1 评论 -
第九课: C数据结构—双向循环链表实现
**双向循环链表实现 ****1、双向循环链表的创建 **typedef struct node{ int data; struct node *prior; struct node *next;}distnode;dlistnode *dlist_create();void dlist_show(distnode *H);dlistnode *dlist_create(){}void dlist_show(distnode *H){}int ma原创 2021-06-27 16:58:38 · 96 阅读 · 0 评论 -
第六课: C数据结构—单链表(二)
1、单链表查找第一种方法按照结点的位置查找;linklist_t GetLinklist(linklist_t h, int pos)linklist_t GetLinklist(linklist_t h, int pos){ int i = 0, j = -1; linklist_t p = h; if(pos < 0) return NULL; while(p->next && i < pos) {原创 2020-08-02 21:33:35 · 127 阅读 · 0 评论 -
第四课:C数据结构—顺序表实现
1、线性表的顺序存储结构线性表作为一种基本的数据结构类型,在计算机存储器中的映象一般有两种形式,一种是顺序映象,一种是链式映象;2、顺序表的存储特点(1)逻辑上相邻的元素ai,ai+1,其存储位置也是相邻的;(2)对数据元素ai的存取为随机存取或按地址存取;(3)存取密度高。3、顺序存储的实现在C语言中,一维数组中的元素也是存放于一片连续的存储空间中,故可借助于C语言中一维数组类型来描述线性表的顺序存储结构:#definde N 100typedef int data_t;typedef原创 2020-07-26 15:51:39 · 115 阅读 · 0 评论 -
第三课:C数据结构—线性表
1、线性表定义线性表就是零个或多个相同数据元素的有限序列。2、线性表的表示方法线性表记为:L=(D, R)3、线性表特征(1)在非空的线性表,有且仅有一个开始结点a1,它没有直接前趋,而仅有一个直接后继a2;(2)有且仅有一个终端结点an,他没有直接后继,而仅有一个直接前趋an-1;(3)其余的内部结点ai(2in-1)都有且仅有一个直接前趋ai-1和一个直接后继ai+1。4、线性表基本运算(1)构造一个空的线性表L:InitList(&L) 或者CreateList(L);(2原创 2020-07-26 11:59:10 · 290 阅读 · 0 评论 -
第二课:C数据结构—算法的基本概念
1、算法的定义算法是解决特定问题的的步骤的描述,在计算机中算法是一个有穷规则(或语法、指令)的有序集合。2、算法是解决问题的步骤、程序是计算机语言的具体实现。3、数据结构 + 算法 = 程序算法的设计:取决于选定的逻辑结构算法的实现:依赖于采用的存储结构4、算法的特性(1)有穷性(2)确定性(3)可行性(4)输入(5)输出5、算法的分析(1)正确解决问题(2)时间足够短、存储足够小(3)可读性高...原创 2020-07-26 10:40:42 · 627 阅读 · 0 评论 -
第一课:走进C数据结构—数据结构基本概念
1、数据结构的基本概念数据结构是研究组成数据的数据元素的关系的学科。2、数据结构的研究目的通过研究数据元素的关系,帮助我们在开发软件的时候更好的组件数据模型,让数据在内存中的操作更加的流畅高效。逻辑关系 存储关系 运算关系3、数据数据即是信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号的总称。数据是集合的概念,存在内存的数据。4、数据元素是数据的基本组成单位,又称之为记录。5、数据项数据元素由若干数据项组成,数据项是数据中的最小单位。6、数据类原创 2020-07-26 10:04:05 · 180 阅读 · 0 评论 -
python 3.7 安装 win32 win32com win32ras模块
目前安装 win32有两种有效方式可以实现,用pip工具安装和官网下载安装包安装。第一种方法:用pip工具安装命令如下:python -m pip install pypiwin32。这条命令在安装过程中可能会报错,多尝试几次即可安装成功。第二种方法:打开win32下载网址:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/;下载对应python版本的win32软件,下载后直接点击安装即可。安...原创 2020-07-21 14:04:36 · 2854 阅读 · 0 评论 -
深入浅出C语言内存管理用法
C语言中定义了4个内存区间:代码区/全局变量与静态变量区/局部变量区即栈区/动态存储区,即堆区。代码区: 程序被操作系统加载到内存的时候,所有的可执行代码(程序代码指令、常量字符串等)都加载到代码区,这块内存在程序运行期间是不变的。代码区是平行的,里面装的就是一堆指令,在程序运行期间是不能改变的。函数也是代码的一部分,故函数都被放在代码区,包括main函数。静态区 静态区存放程序中所有的全局变量和静态变量。栈区 栈(stack)是一种先进后出的内存结构,所有的自动变量、函数形参都存储在栈中,原创 2020-07-19 16:50:17 · 164 阅读 · 0 评论 -
c语言中共用体及typedef用法
1、共用体的定义 通过前面的讲解,我们知道结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员。在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为:union 共用体名{ 成员列表};共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意。结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。结构体占用的内存...原创 2020-07-19 13:32:44 · 738 阅读 · 0 评论 -
c语言中的结构体定义和常见用法
1、结构体简述和概念 结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据。结构体类型不是由系统定义好的,而是需要程序设计者自己定义的。C语言提供了关键字struct来标识所定义的结构体类型。2、结构体的定义3、Example4、特点5、注意点...原创 2020-07-19 12:09:22 · 9574 阅读 · 0 评论 -
GDB调试工具 详解
1、调试器--GDB调用流程第一步编译源文件,生成带调试信息的可执行代码gcc -g test.c -o test第二步启动gdb进行调试gdb test2、GDB常用命令查看文件 -(gdb) l设置断点-(gdb)b value(6)查看断点情况 -(gdb)info value(6)运行代码-(gdb)r查看变量值-(gdb)p n单步运行-(gdb)n or s恢复程序运行-(gdb)c帮助-(gdb)help [command]...原创 2020-07-19 10:53:01 · 204 阅读 · 0 评论 -
GCC编译器用法常见错误及过程 介绍
1、Gcc最基本的用法是∶gcc [options] [filenames] 其中options就是编译器所需要的参数,filenames给出相关的文件名称。-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 eg: gcc -o test原创 2020-07-19 10:33:57 · 1491 阅读 · 0 评论 -
git commit 文本编辑器设置为vim编辑器
git commit 文本编辑器设置为vim编辑器,只需以下命令,如下:git config --global core.editor vim修改后可以在home目录下.gitconfig中可以查看。再次用到git commit会发现,已变成vim编译器模式。原创 2020-06-16 22:12:48 · 1997 阅读 · 0 评论