风言风语
为什么选择租房的地方离公司近? 不是为了多加班被资本压榨剩余价值,而是为了减少通勤时间,把时间用在睡觉和学习上来提升自己的竞争力
名词解释
ROM(BOOTROM CD-ROM) RAM(SRAM DRAM, SDRAM, DDR)FLASH (NOR NAND FLASH)SPI SPLuboot分为uboot-spl和uboot两个组成部分。SPL是Secondary Program Loader的简称,第二阶段程序加载器,这里所谓的第二阶段是相对于SOC中的BROM来说的,之前的文章已经有所介绍,SOC启动最先执行的是BROM中的固化程序。 BROM会通过检测启动方式来加载第二阶段bootloader。uboot已经是一个bootloader了,那么为什么还多一个uboot spl呢? 这个主要原因是对于一些SOC来说,它的内部SRAM可能会比较小,小到无法装载下一个完整的uboot镜像,那么就需要spl,它主要负责初始化外部RAM和环境,并加载真正的uboot镜像到外部RAM中来执行。 所以由此来看,SPL应该是一个非常小的loader程序,可以运行于SOC的内部SRAM中,它的主要功能就是加载真正的uboot并运行之 ARM SoC的启动过程: RomBoot –> SPL –> u-boot...
C++ 11/14/17/20 new feature
自从C++11以来的新特性 auto 自动类型推导 constexpr nullptr 关键字, 用于取代 NULL, 代表空指针 for 循环中的 语法糖 for ( a : array) { } lambda 表达式, 也就是匿名函数 自从C99以来的新特性 变长数组 VLA; 结构体 按成员初始化 restrict 关键字 bool 类型
namespace
namespace (命名空间) 是C++的一个关键字 不同的命名空间中相同的标识符在编译的时候不会产生错误 在不同的命名空间中可以使用相同名字的变量或者函数名称 C 语言的标识符 也有命名空间 (内容来自 C语言规范草案 6.2.3 节) label names标签名 包括 goto 语句 中用到的标签和 switch case中的 标签 the tags name of structures, unions and enumurations结构、联合、枚举的tag名 the members of structures or unions; each structure or union has a seperate name space for its number;结构体、联合的成员名 all other identifiers,called ordinary identifiers (declared in ordinary declarators or asenumeration constants)其他普通的变量,或者枚举常量 C++中使用namesapce ...
About IPC
IPC (Inter-Porcess Communication) 进程间通信 多个进程需要协作的时候通信必不可少 IPC 的五种基本方法 Pipes / FIFOs 管道 Message Queues 消息队列 Shared Memory 共享内存 POSIX Semaphores POSIX 信号量 Sockets 套接字 Pipes 的特性 兼容性问题:最早的时候都是半双工,有的系统却提供了全双工的管道 适用范围的问题:只能在具有相同的祖先进程的进程间使用,多数情况是在父子进程之间使用 Pipes 的使用 使用pipe需要了解两个函数 123456789// 需要包含头文件 <unistd.h>int pipe(int fd[2]); // 创建两个文件描述符,fd[0] 用于读取,fd[1]用于写入// 需要包含头文件 <unistd.h> 和 <sys/types.h>pid_t fork(void); // 通过复制父进程创建子进程// 标准头文件 <stdio.h>// The popen() fu...
About Lint
lint 或者 linter是 一种静态程序分析工具 这里的静态是指在不运行程序的情况下检查代码潜在的问题 最早在Unix平台上开发用于检查C语言程序的 后来被其他的语言借鉴形成了各种各样的lint工具,以提升代码的健壮性 splint 是现在的 linux上的lint工具 安装方法 如下1# apt-get install -y splint splint 从哪里知道的? 来自《C专家编程》中的某个章节 简单用法12345// func.cint func(int /*@unused@*/a,char **b){ return 0;} 1$ splint func.c 会输出警告信息 详细用法可以参考1man splint