物联网
孙光祖
电子爱好者,资源分享,设计共享,一起讨论设计。
展开
-
U-BOOT移植
善用对比软件beyond 选取官方源码版本下载,配置编译 1)指定交叉编译工具链 2)指定CPU和board(参考最类似配置) 3)编译 实现串口数据信息输出 跟踪运行路径 串口输出 网卡移植 寄存器地址 参数设置 FLASH移植 ...原创 2021-07-18 16:30:54 · 101 阅读 · 0 评论 -
u-boot启动流程
uboot启动流程如下: 第一条指令如何执行 从FLASH执行,cpu不需要初始化,从固定内存读代码; 初始化硬件,先后顺序如何 1)关看门狗 2)关中断 3)关mmu,初始化各个bank 4)设置时钟频率 5)进入board_init_f()函数 (初始化定时器,GPIO,串口等,划分内存区域) 如何加载内核 先将flash的代码拷到内存(自搬移uboot到内存) 性能提升 汇编语言和C语言开发的; 汇编阶段: 设置为SVC模式,关闭中断、mmu、看门狗 基本硬件设备初始化 // 时钟、串口、flash原创 2021-07-18 13:17:21 · 127 阅读 · 0 评论 -
bootloader移植相关概念
1、基本概念 什么是BootLoader? BootLoader是硬件启动的引导程序,是运行操作系统的前提; 在操作系统内核或应用程序运行之前运行的一小段代码。对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境。 在嵌入式系统中,整个系统的启动项加载任务通常由BootLoader来完成。 BootLoader 的特点 BootLoader不属于操作系统,一般采用汇编语言和C语言开发。需要针对特定的硬件平台编写。 在移植系统时,首先为开发板移植BootLoader。 BootLoader不但依赖于C原创 2021-07-18 12:30:23 · 202 阅读 · 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 · 143 阅读 · 1 评论 -
第十一课: C数据结构—栈
栈 栈是在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素称为“空栈”。特点:后进先出(LIFO)。 顺序栈: 顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于入栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。 基本运算: 创建空栈:原创 2021-06-27 19:33:45 · 68 阅读 · 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 · 137 阅读 · 0 评论