自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(210)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 2.专题. 逻辑层次结构——树

数据结构 —— 树状结构

2022-12-14 11:21:18 717 1

原创 1.专题 存储结构和逻辑结构

数据结构1

2022-12-14 11:04:08 446

原创 uboot-Makefile

不管新手、老手,写好Makefile都很难。 一个好的Makefile 分析起来,亦难。我试着把Makefile 分析简单化。Makefile 编译出了什么?使用git工具将源码配置好 && 编译完毕后 && 使用git status 命令即可看到编译输出的全部文件Makefile 编译对象日志make --trace vexpress_ca9x4_defconfig | tee trace_configcat trace_config日志:Ma

2022-02-22 16:29:46 414

原创 第一章 HW背景知识

一 数字电路基础MOS管https://blog.csdn.net/Andy_ICer/article/details/111545132双稳态器件、锁存器、触发器https://blog.csdn.net/Andy_ICer/article/details/111545351触发器类型https://blog.csdn.net/Andy_ICer/article/details/111538705锁存器、触发器的区别https://blog.csdn.net/Reborn_Lee/art

2022-02-07 14:12:28 383

原创 第四章 编译链接知识

编译过程链接过程Makefile链接脚本程序优化GDB的使用一个技巧:函数地址或者函数名位于哪个源文件?#gcc 编译时 -g 参数$gcc -g xx.cor$make "CFLAGS+= -g"$arm-linux-gnueabi-addr2line -a 0x60800000 -e u-boot ...

2022-01-22 19:00:09 469

原创 第二章 SOC 基础知识

Soc 设计基础知识ARM 体系结构基础:ARM体系结构与编程(第2版) by 杜春雷ARM 架构版本以及处理器系列

2022-01-22 17:16:31 797

原创 工程分析 - u-boot

uboot 编译环境qemu 学习资料vexpress a9 学习资料3.1 qemu 对 vexpress的介绍:mothter board + daughter card3.2 Versatile Express 的一篇wiki使用uboot编译vexpress4.1 编译方法14.2 编译方法2

2022-01-21 18:11:46 876

原创 第三章 虚拟机环境搭建

搭建虚拟机环境1.1 Oracle VM virtual box 虚拟机 + 虚拟Ubuntu1.2 Oracle VM virtual box 虚拟机 + 虚拟Windows1.3 VMvare Virtual box 虚拟机 + 虚拟Windows1.4 VMvare Virtual box 虚拟机 + 虚拟UbuntuQA:1.5 Oracle VM virtual box 虚拟机和主机间无法复制和粘贴Ubuntu 虚拟机 环境配置2.1 更新源配置...

2022-01-21 14:04:31 673

原创 第十一章 状态模式

1. 状态切换的逻辑1.1 状态机的C实现可以参考如下一个C的状态切换实现,了解何为状态机https://www.cnblogs.com/lihuidashen/p/11510532.html笔者这里抽取其核心设计/*有限状态以及有限事件*/typedef enum{ event_1=1, event_2, event_3, event_4, event_5}EventID; typedef enum { state_1=1, state_2, stat

2021-12-29 18:32:25 270

原创 第十章 模板模式

1. 案例引入:泡茶和咖啡泡茶怎么做的?准备茶叶,加点枸杞,冲入沸水咖啡怎么调制?准备咖啡,加点牛奶,冲入沸水对比泡茶和冲咖啡,需要的步骤是不是很类似? 准备XX,加点YY,冲入热水于是,抽象出如下的设计:makeprocess{准备XX;加点YY;冲入热水}makeprocess 提供一套接口的调用顺序,而具体的函数比如准备XX,加点YY交给子类去实现#include <iostream>using namespace std;class MakeD

2021-12-26 17:43:23 578

原创 第九章 外观模式

1. 外观模式定义:通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。打开家里各种智能设备,研发者只需要提供几种简单选择给用户即可(而非暴露所有的电子特性)类图:2. 示例代码#include <iostream>#include <string>using namespace std;//符合迪米特法则:一个类尽量少了解其他类//电视机class Television { public: void On() {

2021-12-26 15:28:06 77

原创 第八章 适配器模式

xx

2021-12-26 15:12:12 518

原创 第七章 命令模式

2021-12-25 15:34:53 429

原创 第六章 单例模式

1. 单例模式核心概念要求对象实例化只允许一次条件构造函数、拷贝构造函数、赋值拷贝拷贝设置为private2. 单例模式实现2.1 懒汉模式 代码#include <iostream>#include <thread> // std::thread#include <mutex> // std::mutexusing namespace std;class SingleInstance{public:

2021-12-23 15:40:16 302

原创 第五章 工厂模式

1. 简单工厂模式1.1 设计图示1.2 设计说明简单工厂模式核心: Product* SimpleFactory::create(string type)即:根据输入条件 type ,SimpleFactory构建不同的对象。 virtual Product* SimpleFactory::create(string type) { if(type=="ProductA") return new ConcreteProductA;

2021-12-23 13:58:29 461

原创 第四章 装饰模式

1. 模式导言前置条件咖啡市场的竞争十分激烈,新的咖啡豆和咖啡口感层出不穷假设,使用Beverage对咖啡进行抽象。我们考虑两个主要的参数,咖啡价格和咖啡描述class Beverage{public:float getcost(void){return cost}string getdesc(void){return desc}private:float cost;string desc;};方案设计我们考虑,每增加一种咖啡豆和配料的组合,我们就增加一种Beverag

2021-12-14 15:47:19 384

原创 第三章 观察模式

1. 观察模式考察报纸发行过程,一些家庭向报纸销售商进行了订阅,销售商定期把报纸放到家庭门口家庭购报纸的过程叫做注册过程销售商发行报纸的过程是推送过程销售商和家庭之间是一对多的关系2. 总体设计注意事项:Observer 和 Subject 放在同一个进程中!!!2.1 接口说明registerObserver(Observer& O);输入参数:观察者对象的引用。函数功能:Subject负责把Observer 添加到订阅者列表中removeObserver(Observ

2021-12-13 15:19:41 267

原创 第二章 场景模式

场景模式设计说明

2021-12-09 16:33:22 904

原创 36~C++ 内联函数

1. 形式及作用考虑宏的用法,做一个乘法运算#define SQUARE(X) ((X)*(X))...int main(){ int val1 = 2; float val2 = 0.1; int result1 = SQUARE(val1); //result1 = ((val1) * (val1)) float result2 = SQUARE(val2); //result2 = ((val2) * (val2)) ...}内联函数与宏类似,只在写法上有区别

2021-11-06 11:29:53 236

原创 系统管理:软件启动

一、systemd参考:https://www.cnblogs.com/hongdada/p/9700900.html

2021-10-25 13:15:58 49

原创 ARM 体系结构与编程 - Data definition

https://developer.arm.com/documentation/100068/0616/Migrating-from-armasm-to-the-armclang-Integrated-Assembler/Data-definition-directives.global _start_start:mov r0, #Label1ldr r1, Label1ldr r1, Label2ldr r1, Label3ldr r1, Label4//mov r0, #Label3

2021-10-11 16:30:35 82

原创 ARM 体系结构与编程 - Numeric local labels

参考资料https://developer.arm.com/documentation/100068/0616/Migrating-from-armasm-to-the-armclang-Integrated-Assembler/Numeric-local-labels?lang=en.global _start_start: MOV r4,#1 // r4=11: // Local label

2021-10-11 15:49:22 101

原创 ARM 体系结构与编程 - Label

参考资料:https://developer.arm.com/documentation/100068/0616/Migrating-from-armasm-to-the-armclang-Integrated-Assembler/Labels跳转 MOV R5, #1 MOV R6, #2 BL final //LR = 0x0c MOV R7, #3 //skipped MOV R8, #4 //skippedfinal:循环loop: MOV R5, #1 MOV

2021-10-09 17:53:24 202

原创 ARM 体系结构与编程 - 条件执行

ref link1. 仿真实验MRS R0, CPSR //CPSR to R0MOV R1, #0x01ORR R0, R0, R1, LSL 30 // set Z flagMSR CPSR_c, R0 //R0 to CPSREQMOV R3, #0x01 //do itNEMOV R3, #0x02 //skip thisBIC R0, R0, R1, LSL 30 // clear Z flagMSR CPSR_c, R0 //R0 to CPSREQMOV R3,

2021-09-10 15:13:19 72

原创 ARM体系结构与编程 - CPSR

ref link1. 基本概念机器指令不区分有符号数或无符号数!参考资料2. 仿真实验● ADDMOV R1, #0x80000000MOV R0, #0x80000000ADDS R2, R1, R0 //最高位向更高位进位 -- C flag 设置; 最高位均为1,相加得0,-- V flag设置;R0 = 0, Z flag设置● SUBMOV R1, #0x80000000MOV R0, #0x01 SUBS R2, R1, R0 //最高位从1,变成0 -- V fl

2021-09-10 14:35:09 139

原创 ARM 体系结构与编程 - 跳转指令

ARM的跳转指令可以从当前指令向前或向后32MB的地址空间跳转。这类跳转指令有以下4种。● B:B{L}{} <target_address>_start:MOV R5, #1MOV R6, #2B finalMOV R7, #3 //skippedMOV R8, #4 //skippedfinal:● BL:带返回的跳转指令。_start: MOV R5, #1 MOV R6, #2 BL final //LR = 0x0c MOV R7, #3

2021-09-09 15:16:27 523

原创 ARM 体系结构系列——Load/Store指令

1. 字 加载存储指令● [<Rn>, #+/-<offset_12>] MOV R1, #0x100 MOV R0, #0x8 STR R0, [R1] ;address 0x100 {0x00 00 00 08} STR R0, [R1, #4] ;address 0x104 {0x00 00 00 08} MOV R1, #0x100 LDR R2, [R1] ; 将内存单元R1中的字读取到R2寄存器中 R2

2021-09-09 14:15:22 2016

原创 ARM 体系结构系列——数据处理指令

1. 指令功能ASR provides the signed value of the contents of a register divided by a power of two. It copies the sign bit into vacated bit positions on the left.LSL provides the value of a register multiplied by a power of two. LSR provides the unsigned valu

2021-09-08 10:58:50 405

原创 LinuxC 链接脚本

参考文章https://home.cs.colorado.edu/~main/cs1300/doc/gnu/ld_3.html#SEC48实验模板1. 模板2. 源码#cat a.cint g_a = 1;static int s_a = 1;void fool_a (void){}void foon_a (void){}# cat b.cint g_b = 1;static int s_b = 1;void fool_b (void){}void foon

2021-08-26 14:45:57 246

原创 LinuxC ELF优化

default$gcc helloworld.c -o default.elfdefault.elf: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=fe1fe362cb4e81ba401e5904b56e981941117fe7, for GNU/Linux 3.2.0, not s..

2021-08-25 14:59:19 183

原创 工程分析:Kconfig

实验背景uboot源码链接编译方式# for arm$ export ARCH=arm$ export CROSS_COMPILE=arm-linux-gnueabi-$ make vexpress_ca9x4_defconfig$ make -j4scopeKconfig 分析读一读这篇文章嵌入式软件常用的组合是 uboot + linux: 它们支持了市场上相当部分的电子产品。uboot 和 linux 源码 的编译系统:Makefile + Kconfig

2021-08-20 14:45:24 706

转载 BSP 开发基础

推荐下网友的整理(uboot + kernel)编译、仿真https://blog.csdn.net/wxh0000mm/article/details/108234090https://blog.csdn.net/wxh0000mm/article/details/108234270https://blog.csdn.net/wxh0000mm/article/details/108234539https://blog.csdn.net/wxh0000mm/article/details/1082

2021-08-17 17:00:22 124

原创 Flatbufer 基础

1. Flatbuffer 概要:2. Flatbuffer 安装:$ choice "folder for installation"$ cd "folder for installation"$ git clone https://github.com/google/flatbuffers.git$ cd flatbuffers$ cmake -G "Unix Makefiles" (install cmake if need)$ make && sudo make in

2021-07-02 15:08:27 189

原创 配置文件概要

1. INI 配置文件INI 配置文件 格式简单,设计方便;易于理解— 常用于小型软件(配置结构简单的场景)推荐资料:INI Section+Key-Val 结构Github 上一款INI 解析器简要备注:INI 只规定文件的格式,设计者需要设计代码对文件进行读写操作(设计时可能的考虑有)使用开源代码 或者自行设计C/C++ Java shell等实现设计线程安全问题2. XML 配置文件XML 相比INI 配置文件 适合更复杂的层级/树状结构,同样推荐上面的博文对XML的

2021-07-01 14:17:46 174

原创 第一章 数据抽象

数据抽象前言一、Has a二、Association三、inheritance /Generalization前言 细数C++编程思想的数据关系一、Has a 事物之间具有显然的包含关系,使用”Has a“关系,Has a关系有两种,聚合(aggragation)以及组合(composition)composition 当整体不存在时,整体的组成部分也应当被销毁aggragation 当整体不存在时,整体的组成部分可以继续存在如下图示:Unitversity 不存在的时候,部门就应当销毁(

2021-06-21 14:51:10 157

原创 GDB基础

GDB基础前言: GDB 是什么?一、编译要求1. 源码2. 编译方式二、基本用法1. 启动gdb2. 源码查阅2.1 查阅函数2.2 查阅行号3. 断点控制4. 执行控制三、用法演示四、进程场景五、更多技巧前言: GDB 是什么?GDB 是软件仿真工具,使用场景大致分为两种1、gdb用于host主机在线调试(断点、单步调试)2、gdb用于调试corefile以下示例结合场景1进行说明一、编译要求1. 源码/*hello.c*/#include <stdio.h>st

2021-06-16 14:14:37 278

原创 LinuxC 编译过程

LinuxC 编译过程前言一、主要过程1. 环境配置2. 示例源码3. 编译过程二、过程展开1. gcc 在哪2. 编译步骤预处理编译汇编链接3. 挖掘问题源码在哪更多问题前言试陈述C源代码到可执行程序的过程一、主要过程1. 环境配置 ubuntu 20.042. 示例源码/*$ cat helloworld.c*/#include <stdio.h>int main(void){ printf("Hello World!\n");}3. 编译过程$

2021-05-28 17:13:19 540

翻译 cmake-00-refference

本文整理自Github 【cmake example from trroy】Github 【cmake cookbook from dev-cafe】随笔:20世纪人类建立了三个无与伦比的概念:“字节”,“基因”,“原子”

2021-05-13 17:01:53 65

翻译 cmake-11-cmakeSyntax

macroadd_executable(cpp_test test.cpp)target_link_libraries(cpp_test sum_integers)macro(add_catch_test _name _cost) math(EXPR num_macro_calls "${num_macro_calls} + 1") message(STATUS "add_catch_test called with ${ARGC} arguments: ${ARGV}") set(_

2021-05-13 16:53:34 92

翻译 cmake-10-codeGeneration

Methodconfigure time + configure_filecmake_minimum_required(VERSION 3.10 FATAL_ERROR)project(recipe-01 LANGUAGES Fortran C)# Get usernameexecute_process( COMMAND whoami TIMEOUT 1 OUTPUT_VARIABLE _user_name OUTPUT_STRIP_TRAILING_W

2021-05-13 15:44:14 135

U-boot 环境变量的加载 以及存储过程(Nor Flash)

U-boot 环境变量的加载 以及存储过程(Nor Flash)

2022-02-24

Uboot 串口设备驱动程序

Uboot 串口设备驱动程序

2022-02-24

ti8148 MLO 和 uboot 在 二进制文件上的差异

ti8148 MLO 和 uboot 在 二进制文件上的差异

2022-02-05

U-boot driver mode的数据结构 简图

U-boot driver mode的数据结构 简图

2022-02-04

address-spaces.pdf

老外写的,通俗简单

2021-05-31

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除