自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 密码的世界

大致讲述了网络世界中是如何保证通信安全

2023-02-19 20:46:36 462

原创 ARM指令寻址方式

1、数据处理指令的操作数的寻址方式立即数方式MOV R0, #100 ;将100放到R0中寄存器方式MOV R0, R1 ;将R1的值放到R0中ADD R0, R1, R2 ;将R1 + R2的值放到R0中寄存器移位方式ASR 算术右移(arithmetic shift right)ASL 逻辑左移(logic shift left)ASR 逻辑右移(lo...

2020-03-03 23:35:13 1791

原创 Linux 内存管理(1)--物理内存初始化

1 内存初始化总体流程内核版本:Linux 4.14硬件平台:IMX6DL-SABRESDstart_kernel()|----page_address_init()|----setup_arch() |----setup_machine_fdt() | |----early_init_dt_scan_nodes() | |----of_scan_flat_dt(early_in...

2019-09-09 20:49:52 830

原创 Linux vfs流程分析 阶段二:安装实际根文件系统

1 安装实际根文件系统整体流程Linux版本:linux4.14上篇文章说道:vfs 在初始化阶段安装了一个基于 ramfs 的rootfs,该文件系统仅提供一个作为初始安装点的空目录。这里有个疑问?为什么内核不怕麻烦,要在安装实际根文件系统之前安装 rootfs 文件系统呢?我们知道, rootfs 文件系统允许内核容易地改变实际根文件系统。事实上,在某些情况下,内核逐个地安装和卸载几个根...

2019-08-26 10:29:36 438

原创 Linux vfs流程分析 阶段一:安装 rootfs 文件系统

1 vfs整体流程Linux版本:linux4.14vfs函数调用流程start_kernel()|----vfs_caches_init_early()|----vfs_caches_init() |----dcache_init() |----inode_init() |----files_init() |----files_maxfiles_init() |--...

2019-08-23 22:10:33 546

原创 Linux read系统调用之 submit_bio()

1 submit_bio()接上一篇文章,mpage_bio_submit() 函数最终调用 submit_bio(),将 bio 请求提交到 generic block layer。void submit_bio(int rw, struct bio *bio){ bio->bi_rw |= rw; /* * If it's a regular read/write or ...

2019-08-07 13:11:18 3683

原创 Linux read系统调用之 page_cache_sync_readahead()

1 page_cache_sync_readahead()上篇文章说道在 do_generic_file_read() 函数中 label find_page 中调用 page_cache_sync_readahead() 启动同步预读。void page_cache_sync_readahead(struct address_space *mapping, struct ...

2019-07-31 10:41:40 1741

原创 Linux read系统调用之 do_generic_file_read()

1 do_generic_file_read()上篇文章讲到 do_generic_file_read() 函数,现在我们来具体分析以下这个函数。static ssize_t do_generic_file_read(struct file *filp, loff_t *ppos, struct iov_iter *iter, ssize_t written){ struct addr...

2019-07-29 19:33:48 1630

原创 Linux read系统调用

1 read系统调用流程本文内核版本:4.1.15文件系统:ext3read() vfs_read() rw_verify_area() __vfs_read() new_sync_read() generic_file_read_iter() do_generic_file_read()2 调用函数分析2.1 read()系统调用 read() ...

2019-07-27 15:02:14 3817 2

原创 IMX6DL 串口篇

1 设备树文件1.1 引脚配置硬件上采用了 CSI0_DAT10、CSI0_DAT11 做为串口 1 的 TX,RX,在设备树文件中,需要按照如下配置: pinctrl_uart1: uart1grp { fsl,pins = < MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b1 MX6QDL_PAD_CSI0_DAT11...

2019-07-17 11:10:54 1361

原创 Linux 串口篇

1 终端 I/O在 Linux 系统中,串口属于终端 I/O 操作。终端 I/O 有两种不同的工作模式:规范模式(canonical mode)。在这种模式中,对终端输入以行为单位进行处理。对于每个读请求,终端驱动程序最多返回一行。非规范模式(noncanonical mode)。输入字符不装配成行。每个终端设备都有一个输入队列和输出队列,如下图所示:...

2019-07-16 16:52:47 2434 1

原创 IMX6DL 串口 open 操作过程分析

1 open 操作过程分析代码平台:IMX6DL代码入口:tty_open()1.1 函数调用关系总览tty_open(struct inode *inode, struct file *filp) tty_alloc_file(flip) // alloc tty_file_private *priv, link it to file->private_data tty...

2019-07-11 14:17:50 366

原创 IMX6DL 串口驱动分析

1、驱动注册过程代码平台:IMX6DL代码入口:./drivers/tty/serial/imx.c/module_init(imx_serial_init)static int __init imx_serial_init(void){ int ret = uart_register_driver(&imx_reg); //drivers/tty/serial/serial_...

2019-07-08 16:11:04 1695

原创 uboot init_sequence_f[]分析

1、init_sequence_f [ ]分析本文针对的硬件平台为imx6dl-sabresd。init_sequence_f [ ]函数组的作用:init_sequence_f [ ]:- purpose: set up the machine ready for running board_init_r():i.e. SDRAM and serial UART- global...

2019-05-27 09:23:06 843

原创 uboot环境变量

1、uboot环境变量结构外部环境变量:外部环境变量是固化在存储介质上的,可断电保存,具体保存在什么介质上,通过开发板定义的CONFIG_ENV_IS_IN_XXX选项来指定,例如nand、flash、mmc等。如果不使用外部环境变量,可定义CONFIG_ENV_IS_NO_WHERE。saveenv命令就是存储在外部环境变量。外部环境变量的前四个字节存储的是crc校验码。./includ...

2019-05-21 14:41:12 1753

原创 uboot globa_data介绍

1、global_data功能uboot在重定向到RAM中运行之前,一般是运行在只读存储器上(ROM, NOR FLASH),我们是无法写入数据的,更无法通过全局变量来传递数据。解决办法:在uboot重定向之前,uboot把global_data放在RAM区,并且使用global_data来存储全局数据。由此来解决上述场景中无法使用全局变量的问题。后续的uboot的relocation操作,...

2019-05-18 14:57:31 421

原创 uboot启动流程-lowlevel_init

1、源码及注释ENTRY(lowlevel_init) /* * Setup a temporary stack. Global data is not available yet. */ ldr sp, =CONFIG_SYS_INIT_SP_ADDR bic sp, sp, #7 /* 8-byte alignment for ABI compliance */#ifdef ...

2019-05-18 13:16:45 1012

原创 第三章 基本概念

3.1 语法3.1.1 区分大小写ECMAScript 中的一切(变量、函数名和操作符)都区分大小写。3.1.2 标识符所谓标识符,就是指变量、函数、属性的名字,或者函数的参数。标识符可以按照下列格式规则组合起来的一或多个字符:第一个字符必须是一个字母、下划线(_)或一个美元符号($);其他字符可以是字母、下划线、美元符号或数字。标识符中的字符也可以包含扩展的ASCII或...

2019-05-11 22:55:52 115

原创 第一章 基本机构与基本数据类型

1、文件名、关键字与标识符Go的源文件以.go为后缀名存储,这些文件名均由小写字母组成,如果文件名由多个部分组成,则是用下划线_对他们进行分隔。文件名不包含空格或其他特殊字符。下面列举了GO代码中会使用到的25个关键字或保留字:breakdefaultfuncinterfaceselectcasedefetgomapstructchanelse...

2019-03-17 16:48:46 202

原创 ubuntu命令行下无线上网

1、启动wifi模ifconfig -aifconfig wlan0 upifconfig2、扫描热点iwlist wlan0 scanning3、建立wpa_supplicant.conf $ vim /etc/wpa_supplicant.conf 1 ctrl_interface=/var/run/wpa_supplicant 2 update_config=1...

2019-03-08 11:18:04 1082

原创 第15章 面向对象程序设计

1、面向对象程序设计基于三个基本概念:数据抽象、继承和动态绑定。数据抽象:可以将类的接口与实现分离。继承:可以定义相似的类型并对其相似关系建模。动态绑定:可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。继承通过继承联系在一起的类构成一种层次关系。通常在层次关系的根部有一个基类,其他类则是直接或间接地从基类继承而来,这些继承得到的类称为派生类。基类负责定义在层次关...

2019-02-27 17:52:10 173

原创 第13章 拷贝控制

1、拷贝控制操作(copy control)一个类通过定义五种特殊的成员函数来控制对象拷贝、移动、赋值和销毁:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符、析构函数。拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么。拷贝和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时做什么。析构函数定义了当此类型对象销毁时做什么。2、拷贝、赋值和销毁拷贝构造...

2019-02-26 17:49:36 175

原创 第12章 动态内存

1、动态内存与智能指针除了自动和static对象外,C++还支持动态分配对象。动态分配的对象的生存期与它们在哪里创建是无关的,只有当显式地被释放时,这些对象才会销毁。在c++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针;delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。动态内存的使用很容易出问题,因为确保在正...

2019-02-25 19:49:22 143

原创 第8章 IO类

1、IO类iostream定义了用于读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型。头文件类型iostreamiostream,wiostream读写流fstreamfstream,wfstream读写文件sstreamstringstream,wstringstream读写string...

2019-02-25 15:39:59 126

原创 第7章 类

1、类的基本思想是数据抽象(data abstraction)和封装(encapsulation)。数据抽象是一种依赖于接口(interface)和实现(implemention)分离的编程技术。类的结构包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。Sale_data的接口应该包含以下操作:一个isbn成员函数,用于返回对象的IS...

2019-02-22 18:07:06 164

原创 第11章 关联容器

1、标准库提供8个关联容器。map关联数组;保存关键字-值对set只保存关键字multimap关键字可重复的mapmultiset关键字可重复的setunordered_map用哈希函数组织的mapunordered_set用哈希函数组织的setunordered_multimap哈希组织的map;关键字可重复unordered...

2019-02-21 16:53:39 202

原创 第10章 STL函数对象及Lambda

1、Function Object(函数对象)class FunctionObjectType { public: void operator() () { statements; }}这种定义形式更为复杂,却有三大有点:Function object比一般函数更灵巧,因为它可以拥有状态(state)。事实上,对于相同的function object Class你可以拥有...

2019-02-19 17:25:16 195

原创 第9章 STL迭代器

1、迭代器类别output迭代器只写,不读,单遍扫描,只能递增ostream、insertinput迭代器只读,不写,单遍扫描,只能递增istreamforward迭代器可读写,多遍扫描,只能递增forward_list、unordered containersbidirectional迭代器可读写,多遍扫描,可递增递减list、set、multis...

2019-02-19 14:18:30 89

原创 第10章 泛型算法

1、算法永远不会执行容器操作。泛型算法本省不会执行容器的操作,它们只会运行与迭代器之上,执行迭代器的操作。算法永远不会改变底层容器的大小。算法可能癌变容器中保存的元素的值,也可能在容器内移动元素,但永远不会直接添加或删除元素。标准库定义了一类特殊的迭代器,插入器(inserter)。与普通迭代器只能遍历所绑定的容器相比,插入器能做更多的事情。它们会在底层的容器上执行插入操作。当一个算法操作...

2019-02-18 14:51:30 125

原创 第9章 顺序容器

1、STL提供5中顺序容器array&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;T,N&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;(数组容器),长度固定,有N个T类型对象,不能增加或删除元素。vector (向量容器),长度可变,用来存放T类型对象。必要时,可以自动增加容量,但只能在序列的末尾高效的增加或删除元素。...

2019-02-15 14:14:03 220

原创 第2章 变量和基本类型

算数类型boolcharwchar_tchar16_tchar32_tshortintlonglong longfloatdoublelong double除去布尔型和扩展字符型之外,其他整形可以划分为带符号(signed)和无符号的(unsigned)两种。字符型分为三种:char、signed char、unsigned char。char 与 signed ch...

2018-11-01 08:51:25 95

转载 C++ Primer读书笔记

本文转自博客程云佳 目录 第I部分:C++基础 开始学习C++ 变量和基本类型 字符串、向量和数组 表达式 语句 函数 类第II部分:C++标准库 IO库 顺序容器 范型算法 关联容...

2018-10-30 16:03:30 142

空空如也

空空如也

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

TA关注的人

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