
物联网
孙光祖
电子爱好者,资源分享,设计共享,一起讨论设计。
展开
-
U-BOOT移植
善用对比软件beyond选取官方源码版本下载,配置编译1)指定交叉编译工具链2)指定CPU和board(参考最类似配置)3)编译实现串口数据信息输出跟踪运行路径串口输出网卡移植寄存器地址参数设置FLASH移植...原创 2021-07-18 16:30:54 · 145 阅读 · 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 · 175 阅读 · 0 评论 -
bootloader移植相关概念
1、基本概念什么是BootLoader?BootLoader是硬件启动的引导程序,是运行操作系统的前提;在操作系统内核或应用程序运行之前运行的一小段代码。对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境。在嵌入式系统中,整个系统的启动项加载任务通常由BootLoader来完成。BootLoader 的特点BootLoader不属于操作系统,一般采用汇编语言和C语言开发。需要针对特定的硬件平台编写。在移植系统时,首先为开发板移植BootLoader。BootLoader不但依赖于C原创 2021-07-18 12:30:23 · 259 阅读 · 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 · 226 阅读 · 1 评论 -
第十一课: C数据结构—栈
栈栈是在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素称为“空栈”。特点:后进先出(LIFO)。顺序栈:顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于入栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。基本运算:创建空栈:原创 2021-06-27 19:33:45 · 110 阅读 · 0 评论 -
第七课: C数据结构—单链表(三)
3、单链表的删除list_delete 删除第I个链表,我们需要先找到他的前一个结点(即他的前驱)。list_delete(linklist H,int pos){ linklist p, q; if(pos == 0) { p = H; } else { p = Getlinklist(H, pos-1); } if(p == NULL || p->next == NULL) {原创 2020-08-09 20:59:08 · 179 阅读 · 0 评论