自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只犯困的leo.chen路过的博客

不学无术,天天打牌

  • 博客(6)
  • 资源 (26)
  • 收藏
  • 关注

原创 Kubernetes (K8S) 3 小时快速上手 + 实践

???? Kubenetes(K8S)简介 - K8S 教程K8S 快速上手+实践 - ???? Kubenetes(K8S)简介, 课程内容- 介绍下什么是 kubernetes,什么时候需要 kubernetes,技术团队的文档管理平台,支持在线接口调试,一键生成文档,适合编写接口文档、产品文档、使用手册https://k8s.easydoc.net/docs/dRiQjyTY/28366845/6GiNOzyZ/9EX8Cp45...

2022-01-06 23:43:02 585

原创 Docker 1小时快速上手教程

???? Docker 简介和安装 - Docker 快速入门Docker 快速入门 - ???? Docker 简介和安装, Docker 是什么Docker 是一个应用打包、分发、部署的工具你也可以把它理解为一个轻,技术团队的文档管理平台,支持在线接口调试,一键生成文档,适合编写接口文档、产品文档、使用手册https://docker.easydoc.net/doc/81170005/cCewZWoN/lTKfePfP...

2022-01-05 00:18:05 745

原创 self_driving系统

自动驾驶平台主要组成:高精度地图(HD Maps),定位(Localization),感知(Perception),预测(Prediction),规划(Planning),控制(Control).随笔:汽车利用激光和雷达数据,将这些传感器感知内容与高分辨率地图进行对比,这种对比能使汽车以个位数厘米级精度进行自定位.L1:为驾驶员辅助 该等级为驾驶员提供加速或者转向支持L2:部分自动化车辆自动控制几项功能如自动巡航个车道保持L3:有条件的自动化车辆自主驾驶但是驾驶员必须在必要时刻接管...

2021-05-30 18:00:28 515 1

原创 python三大特性

python继承:

2021-05-30 14:14:13 92

原创 Python函数

函数不定长参数:def MySum(*t): #用*号接收很多参数 print(t, type(t)) #tuple类型MySum(2, 3, 4, 5)def MySum(**kwargs) #用**号接收很多参数 print(kwargs, type(kwargs)) #dict类型MyInfo(name = 'Leo', age = '1987')装包/拆包:缺省参数:函数注意:函数返回值:函数描述:

2021-05-23 00:26:33 63

转载 Ubuntu18.04安装mysql 数据库的问题

转载:https://blog.csdn.net/li761747705/article/details/80409411安装说明:用的是Ubuntu的麒麟版本18.04 版本最新的。数据库:是MySQL Community Server 8.0.11 为什么不安装5.7 版本呢? 因为5.7版本的数据库,支持的最高版本是Ubuntu17 所以安装后你就会发现很多办法都废了。是的,我就是这么折腾了一下午。所以千万不要直接使用 这是一个坑。 sudo apt-get in...

2021-05-18 15:23:11 107

nuttx中断处理.vsdx

由于nuttx中切换到svc模式处理中断,且使用的栈也在svc模式,所以需要恢复2个现场, a. svc中断处理前后的现场(因为切换到svc模式处理中断,这是问题的根源) b. 中断发生前模式现场的恢复 此处借助恢复中断发生前模式现场的时机恢复svc中断处理现场是很巧妙的,核心就是认为切换到目标模式后,需要保存目标模式bank的寄存器 此处涉及对lr寄存器的理解,lr寄存器用于保存返回地址, a. 当未发生异常时,当前模式的lr,保存的是函数调用的返回地址 b. 当发生异常时,当前模式的lr,保存的是异常发生前模式的返回地址

2020-12-09

sd_relocate

BL1的一般任务: ① 环境初始化,尤其是内存初始化。 BL1是由CPU在启动过程中自动从SD卡加载到iRAM中运行,需要为BL2的运行准备环境。 其实BL2有2个运行场所,如果BL2 < 80KB则可以加载到iRAM中运行;如果BL2 > 80KB则只能加载到内存中运行。 虽然S5PV210手册中推荐使用iRAM运行BL2,但是Uboot在实现过程中一般直接使用内存运行BL2,我们也采取这种方式。 ② 将BL2从SD卡加载到内存中并启动运行 考虑到地址相关操作的影响,BL2的链接地址需要和加载的地址匹配

2020-12-08

va_start & va_arg.vsdx

① va_start宏中,通过&(A)取得的就是形参fmt变量的地址,在示例中就是栈中的0x100地址 然后在该地址的基础上,就可以计算出可变参数的起始位置,也就是0x104地址 ② va_arg宏则是根据可变参数的类型,逐个遍历可变参数,此时需要格式字符串标识的类型与实际可变参数的类型一致,否则会解析错误 ③ 由于va_start & va_arg的运行过程高度依赖参数入栈的顺序(只有函数参数是从右向左入栈时,根据"sdc"字符串的解析才是正确的),这就体现了对编译器设置入栈规范的重要性。

2020-12-08

时钟系统编程clock.s

时钟系统初始化代码解析: 关闭PLL输出 设置各PLL的lock time 设置分频系数 设置PLL倍频参数 使能各PLL 时钟系统参数设置完成后,打开各PLL,在lock time之后SoC各模块将按照我们设置的值工作

2020-12-08

OK210 uboot链接器脚本

① ENTRY(SYMBOL) 将符号SYMBOL的值设置成入口地址,arm-linux-ld 有多种方法设置进程入口地址,按优先级排序如下: 使用arm-linux-ld 的-e 选项 链接脚本中的ENTRY(SYMBOL)命令 如果定义了start 符号,使用start 符号值 如果存在.text section,使用.text section 的第一字节位置值 使用值0

2020-12-08

栈演进图.vsdx

函数栈帧分析: ① 注意lr和fp的入栈位置 lr是R14,fp是R11,所以入栈后lr在高地址,fp在低地址 ② 此次main函数栈中保存了lr 这是因为main函数还要调用func1函数,所以将lr寄存器压栈。即非叶子函数在建立函数栈时,需要将lr入栈保存。 ③ 超出r0 ~ r3的参数通过主调函数栈传递 示例中的5和6就通过main函数栈传递,而且func1在使用这2个参数时也是从main函数栈中取出,并没有复制一份到自己的栈中。 ④ 通过r0 ~ r3传递的参数会被压入被调函数栈 这也就是AAPCS中被调函数无需恢复r0 ~ r3的原因

2020-12-08

s5pv210-sdraminit

① 所谓内存初始化就是设置SoC内部的DRAM controller(简称DMC) ② DMC的主要功能有2点, a. 地址信号转换 程序中的物理地址 --> 地址线上的信号 --> 内存内部的寻址信号 b. 处理内存访问的各种时序(由于时序复杂,所以优先使用内存原厂代码)

2020-12-08

嵌入式初始化脚本汇编start.S

注意1:bss段是不需要重定位的,后续的clean_bss过程会将该段内存清空。如果将运行地址处的bss段拷贝到链接地址处,没有实际意义~~ 注意2:清bss段应该在内存初始化之后,此处均使用iRAM,所以没有突出该问题。

2020-12-08

ARM指令集概要手册

5.1 ARM指令集分类 ① 数据处理类指令:完成CPU内部的计算(仅涉及寄存器) ② Load/Store指令:完成CPU与内存/IO外设之间的数据传输 ③ 跳转指令:完成程序的跳转 ④ 程序状态寄存器处理指令:完成CPSR的管理 ⑤ 协处理器指令:完成CPU扩展功能的实现· ⑥ 异常产生指令:用户程序触发异常

2020-12-07

mkv210_image.c

① 分配16KB的buffer ② 将源文件(e.g. led.bin)读到buffer的第16B开始处 ③ 计算校验和并将校验和保存在buffer的8 ~ 11B处 ④ 将16KB的buffer拷贝到目标文件(e.g. 210.bin)

2020-11-17

s5pv210_irom_applicationnote.pdf

启动介质 作为嵌入式系统的启动介质,需要满足以下2个条件, ① CPU可通过地址总线访问 ② 上电后CPU可直接使用,无需初始化 这是因为ARM在启动后,会将PC置为0,并开始取指运行

2020-11-17

pangu eclipse调试环境搭建.docx

调试过程中,arm-linux-gdb发出调试命令,JLinkGDBServer将其转换为符合JLink标准的电平信号,并通过JLink硬件发送到CPU的边界扫描寄存器,实现调试功能。

2020-11-17

Fire_FreeRTOS.zip

FreeRTOS整个文章系列的工程可编译总代码:涵盖任务创建于切换,临界段保护,中断处理,多优先级,任务延时列表实现以及对于时间片的支持

2020-11-14

FreeRTOS就绪列表视图.vsdx

在FreeRTOS中,使用数字表示任务优先级,数字越小优先级越小(这点和uC/OS & RT-Thread正好相反) FreeRTOS中任务就绪列表视图如下图所示,可见如何将就绪列表状态映射到就绪位图中

2020-11-14

FreeRTOS源码结构

FreeRTOS的源码组织也是按照体系结构无关 / 体系结构相关但硬件无关 / 体系结构相关且硬件相关的层次来组织的 其中体系结构相关但硬件无关部分,是OS移植时的重点

2020-11-12

实例:kobject & kset实验

kobject & kset实验 从/sys目录的构成可知整个sysfs文件系统盘根错节,此处补充一个向系统添加kobject & kset对象的实验,帮助理解该过程(但不会过分深入细节)

2020-11-09

ramdisk_driver.c

根据块设备驱动分层,我们要实现的块设备驱动就是最底层的数据结构,VFS / 映射层 / 通用块层 / IO调度层均已由Linux内核实现 所以在实现中仅涉及block_device / gendisk / request_queue / block_device_operations这4个结构的实现,而gendisk结构将这些数据结构串联起来

2020-11-09

myfs-Makefile.zip

Linux实现了KFIFO环形缓冲区,可以在一个读线程和一个写线程并发执行的情况下,不使用锁机制来保证环形缓冲区的数据安全 可见目录与文件可生成,文件可读写 附件:my_fs文件系统源码

2020-10-31

vfsmount.c

根文件系统 每个文件系统都有自己的根目录,如果某个文件系统的根目录是系统目录树的根目录,那么该文件系统就被称为根文件系统 一旦在系统中安装了根文件系统,就可以安装其他文件系统了,每个文件系统都可以安装在系统目录树中的一个目录上 附件:X210遍历vfsmount结构源码

2020-10-31

spinlock_test.c

2.3.5.1 自旋锁不会导致睡眠 自旋锁是一种忙等锁,不会导致睡眠,所以可以用在中断上下文中 2.3.5.2 持有自旋锁不能睡眠 ① 如果是在中断上下文中持有自旋锁,不能睡眠是应有之义 ② 如果是在进程上下文中持有自旋锁,也是不能睡眠的。因为自旋锁会关抢占,该进程一旦睡眠,该CPU上就无法再调度其他任务执行,只能响应中断 在实际使用中,在关抢占的情况下调用schedule,内核允许会报bug 2.3.5.3 自旋锁变种分析 自旋锁变种使用的原则就是谁抢CPU就关谁 ① 何时关中断 如果除了当前的内核任务,还有中断处理程序会访问临界区,则需要关中断。其中需要注意的是,即使是在单核CPU中

2020-10-27

memory_map_kmalloc.c

vmalloc分配的内存虚拟地址连续但物理地址不连续,所以只能在缺页异常中逐页建立映射 下面给出使用kmalloc分配内存,并在mmap函数中一次性建立映射的示例

2020-10-22

memory_map.7z

进程用户空间布局 参考之前对vmalloc函数实现的分析,vmalloc时是从内核页表的pgd开始逐层生成并建立页表,vmalloc_to_page就是对应的逆过程,先找到虚拟地址对应的页表项pte,就能通过pte_pfn计算出页号,再通过pfn_to_page就可以得到对应的页描述符 即pte --> pfn --> page 此处注意pte_offset_map和pte_unmap的配对使用

2020-10-22

linux内存分配实例

可见分配的内存的虚拟地址符合预期,__get_fre_page和kmalloc分配的内存在线性映射区,vmalloc分配的内存在非连续内存区

2020-10-22

linux负载均衡检测模块代码

负载检测模块代码:进程内的所有线程构成线程组,其中主线程是线程组的组长,主线程的pid就是该线程组的tgid,Linux内核中先按进程组织,然后线程又被组织在进程中,也就是说进程起到了线程组的作用

2020-10-19

X86 32位PAE地址划分

X86平台 32位PAE地址划分资料:从上述宏定义可见,80386中只使用两级页表,物理上并没有PMD 作为对比,我们可以看下arch/x86/include/asm/pgtable-3level_types.h中的宏定义,从文件名可知,在这种模式下使用了三级页表。X86的PAE(Physical Address Extension)模式会使用三级页表

2020-10-19

空空如也

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

TA关注的人

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