- 博客(210)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 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 456
原创 第一章 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 432
原创 第四章 编译链接知识
编译过程链接过程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 485
原创 工程分析 - 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 1036
原创 第三章 虚拟机环境搭建
搭建虚拟机环境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 686
原创 第十一章 状态模式
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 279
原创 第十章 模板模式
1. 案例引入:泡茶和咖啡泡茶怎么做的?准备茶叶,加点枸杞,冲入沸水咖啡怎么调制?准备咖啡,加点牛奶,冲入沸水对比泡茶和冲咖啡,需要的步骤是不是很类似? 准备XX,加点YY,冲入热水于是,抽象出如下的设计:makeprocess{准备XX;加点YY;冲入热水}makeprocess 提供一套接口的调用顺序,而具体的函数比如准备XX,加点YY交给子类去实现#include <iostream>using namespace std;class MakeD
2021-12-26 17:43:23 595
原创 第九章 外观模式
1. 外观模式定义:通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。打开家里各种智能设备,研发者只需要提供几种简单选择给用户即可(而非暴露所有的电子特性)类图:2. 示例代码#include <iostream>#include <string>using namespace std;//符合迪米特法则:一个类尽量少了解其他类//电视机class Television { public: void On() {
2021-12-26 15:28:06 88
原创 第六章 单例模式
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 313
原创 第五章 工厂模式
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 470
原创 第四章 装饰模式
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 417
原创 第三章 观察模式
1. 观察模式考察报纸发行过程,一些家庭向报纸销售商进行了订阅,销售商定期把报纸放到家庭门口家庭购报纸的过程叫做注册过程销售商发行报纸的过程是推送过程销售商和家庭之间是一对多的关系2. 总体设计注意事项:Observer 和 Subject 放在同一个进程中!!!2.1 接口说明registerObserver(Observer& O);输入参数:观察者对象的引用。函数功能:Subject负责把Observer 添加到订阅者列表中removeObserver(Observ
2021-12-13 15:19:41 278
原创 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 248
原创 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 101
原创 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 122
原创 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 237
原创 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 96
原创 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 154
原创 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 566
原创 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 2165
原创 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 503
原创 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 271
原创 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 195
原创 工程分析: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 760
转载 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 143
原创 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 212
原创 配置文件概要
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 201
原创 第一章 数据抽象
数据抽象前言一、Has a二、Association三、inheritance /Generalization前言 细数C++编程思想的数据关系一、Has a 事物之间具有显然的包含关系,使用”Has a“关系,Has a关系有两种,聚合(aggragation)以及组合(composition)composition 当整体不存在时,整体的组成部分也应当被销毁aggragation 当整体不存在时,整体的组成部分可以继续存在如下图示:Unitversity 不存在的时候,部门就应当销毁(
2021-06-21 14:51:10 207
原创 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 321
原创 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 580
翻译 cmake-00-refference
本文整理自Github 【cmake example from trroy】Github 【cmake cookbook from dev-cafe】随笔:20世纪人类建立了三个无与伦比的概念:“字节”,“基因”,“原子”
2021-05-13 17:01:53 74
翻译 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 102
翻译 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 155
vxworks 移植memcpy函数,可是测试qt程序黑屏
2016-08-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人