自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux内核源码分析(八)--启动内存分配器

在Linux内核启动的过程中需要分配内存,但完整的内存管理子系统还没有初始化,此时需要一个简单的内存管理办法,就是我们要介绍的启动内存分配器。启动内存分配器主要用位图来管理物理页的分配,一个页的分配状态可以用一个位来表示。所以初始化启动内存分配器的时候,肯定要知道总共有多少物理页,起始的物理页在哪里等这样的信息。所以我们可以猜想有以下特征的一个数据结构:(1)   包含一个记录物理页分配状态的位图...

2018-05-06 21:25:31 651 1

原创 Linux内核源码分析(七)--start_kernel之local_irq_disable

local_irq_disable的定义有两处,和跟踪调试有关,由CONFIG_TRACE_IRQFLAGS_SUPPORT宏开关加以区分,当关闭这个宏的时候我怀疑2.6的内核定义是颠倒的,翻看最新的4.14.15的内核发现果然是定义颠倒了。不过我们主要关注的是宏开关打开后的定义。local_irq_disable宏定义在include/linux/irqflags.h文件中。#d

2018-01-30 11:40:52 660

原创 Linux内核源码分析(六)--start_kernel之lockdep_init

这个函数比较短,这里直接贴出来。void lockdep_init(void){        int i;        /*         * Some architectures have their own start_kernel()         * code which calls lockdep_init(), while we also      

2018-01-26 10:02:39 1815

原创 Linux内核源码分析(五)--start_kernel之unwind_init

我的内核中该函数为空,暂时保留,以后结合其他版本内核及设计思想再做分析。

2018-01-26 09:57:10 827

原创 Linux内核源码分析(四)--start_kernel之smp_setup_processor_id

我的内核中该函数是空的,暂时保留,以后对比其他版本内核结合设计思想再做分析。

2018-01-26 09:54:02 574

原创 Linux内核源码分析(三)--启动汇编下篇

废话少说,接着上一篇继续分析我们的__create_page_tables函数。

2017-12-24 17:58:20 343

原创 Linux内核源码分析(二)--启动汇编上篇

在跳入c函数start_kernel之前有一段汇编代码,从内核链接脚本可以看出内核的入口在stext代码段,这里正是汇编代码的入口。

2017-12-24 09:20:48 681

原创 Linux内核源码分析(一)--序言

工作四年,很多小伙伴都开始转行搞其他的了,我想我的事情还没有做完。还没有完整地分析一遍Linux内核,还没有自己写过内核,怀着这样的遗憾我什么也做不了。所以现在开始要完整的分析一遍Linux内核源码了,借助s3c2440的cpu加Linux 2.6.22的内核源码踏上遇神杀神,遇佛杀佛的不归路。这回不想走情景式的分析道路,就是要一条一条指令,一行一行代码的死磕到底,并在csdn上留下我的记录。

2017-12-10 17:01:57 336

原创 vim cscope配置

vim cscope配置

2022-11-02 20:51:25 250 1

原创 RISC-V GCC默认链接脚本

RISC-V 链接脚本

2022-10-16 19:53:49 523

转载 GNU链接脚本(12) - 抛弃glibc依赖

原文:https://github.com/iDalink/ld-linker-script/tree/master/12%20%E6%8A%9B%E5%BC%83glibc%E4%BE%9D%E8%B5%961、目标上一节,我们已经体会到系统库的复杂。为了保持可控性,我们决定抛弃glibc,构建一个完全可控的应用程序。我们需要两个函数,puts和exit,分别实现日志输出和程序退出。2、系统调用应用程序调用系统服务称之为系统调用(system call),应用程序之间的函数调用称之为库调用

2021-02-03 22:26:20 329

转载 GNU链接脚本(11) - 构建可运行程序

原文:https://github.com/iDalink/ld-linker-script/tree/master/11%20%E6%9E%84%E5%BB%BA%E5%8F%AF%E8%BF%90%E8%A1%8C%E7%A8%8B%E5%BA%8F1、目标你可能已经注意到,我们前面自定义linker script编译的可执行均无法正常运行。其原因是现代系统有无数的细节需要小心处理。一方面是,printf是系统libc提供的函数,为了保证编译通过我们只是简单得把printf函数屏...

2021-02-03 22:24:17 375

转载 GNU链接脚本(10) - 表达式

原文:https://github.com/iDalink/ld-linker-script/tree/master/10%20Linker%20Scripts%E4%B8%AD%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F1、常量_fourk_1 = 4K;_fourk_2 = 4096;_fourk_3 = 0x1000;_fourk_4 = 10000o;2、符号名"SECTION" = 9;"with a space" = "also with

2021-02-03 22:19:49 108

转载 GNU链接脚本(09) - VERSION指令

原文:https://github.com/iDalink/ld-linker-script/tree/master/09%20VERSION%E6%8C%87%E4%BB%A41、符号导出版本符号导出版本在version script中指明.VER_1.1 { math_pow;};VER_1.2 { math_pow;} VER_1.1;2、函数别名绑定__asm__(".symver math_pow_old, ma...

2021-02-03 22:17:43 204

转载 GNU链接脚本(08) - PHDRS指令

原文:https://github.com/iDalink/ld-linker-script/tree/master/08%20PHDRS%E6%8C%87%E4%BB%A41、格式预览PHDRS{ name type [ FILEHDR ] [ PHDRS ] [ AT ( address ) ] [ FLAGS ( flags ) ] ;}ld默认一组phdrs。如果自定义了自己的PHDRS,那么默认的phdrs将会被屏蔽。FI...

2021-02-03 22:02:22 377

转载 GNU链接脚本(07) - MEMORY指令

原文:https://github.com/iDalink/ld-linker-script/tree/master/07%20MEMORY%E6%8C%87%E4%BB%A41、完整格式MEMORY { name [(attr)] : ORIGIN = origin, LENGTH = len … }2、attrattr 描述 R 只读 W 读写 X 可执行 A 可分配 I 初始 L 同I !

2021-02-03 21:37:04 534

转载 GNU链接脚本(06) - SECTIONS指令

原文:https://github.com/iDalink/ld-linker-script/tree/master/06%20SECTIONS%E6%8C%87%E4%BB%A41、指令预览*section* [address] [(type)] : [AT(lma)] [ALIGN(section_align) | ALIGN_WITH_INPUT] [SUBALIGN(subsection_align)] [constraint] { output-section

2021-02-03 21:33:26 826

转载 GNU链接脚本(05) - 符号值分配

原文:https://github.com/iDalink/ld-linker-script/tree/master/05%20%E7%AC%A6%E5%8F%B7%E5%80%BC%E5%88%86%E9%85%8D1、简单符号值第一节已经对符号做了描述,并且提及链接脚本也是符号的产生原因之一。符号支持如下运算。symbol = expression ; symbol += expression ; symbol -= expression ; symbol *= expre...

2021-02-03 21:27:03 154

转载 GNU链接脚本(04) - 简要链接指令

原文:https://github.com/iDalink/ld-linker-script/tree/master/04%20%E7%AE%80%E8%A6%81%E9%93%BE%E6%8E%A5%E6%8C%87%E4%BB%A41、指定程序入口使用ENTRY指令指定程序入口。格式为如下。ENTRY(symbol)其它指定入口方式如下。使用命令行-e 参数 使用ENTRY(symbol)指令 平台相关定义,众多平台为start .text段...

2021-02-02 22:51:42 392

转载 GNU链接脚本(03) - 简要示例

1、测试示例这一小节我们演示linker script的简单用法。第一节中我们创建了一个测试用例,并编译连接出一个能够运行的可执行程序app。使用readelf命令,获取可执行程序的segment分配如下图。 $ readelf -l app Elf file type is DYN (Shared object file)Entry point 0x580There are 9 program headers, starting at offset ...

2021-02-02 22:46:58 144

转载 GNU链接脚本(02) - 格式

原文:https://github.com/iDalink/ld-linker-script/tree/master/02%20%E6%A0%BC%E5%BC%8F1、注释写法linker script使用/* */方式表达注释。2、文件名写法当包含文件时,你可以直接键入文件名。如果文件名包含特殊字符,需要使用引号包裹文件名。...

2021-02-02 22:39:09 72

转载 GNU链接脚本(01) - 基本概念

原文:https://github.com/iDalink/ld-linker-script/tree/master/01%20%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B51、概述Linux编译产出文件种类包括目标文件、可执行文件、动态链接文件、目标归档文件。这些文件格式常为ELF格式。文件类型 英文名 扩展名 生成指令 目标文件 object file .o gcc -C ... 可执行文件 exec...

2021-02-02 22:35:23 257

原创 openocd编译安装

openocd编译1. 简介openocd是open on chip debugger的简称,一般想脱离windows系统的一些调试工具进行片上调试的话,都会选择用这个。在这里只记录本人在ubuntu20.04上的编译安装的过程,以便日后查询。2. 下载可以在openocd官网下载源码包:https://sourceforge.net/projects/openocd/3. 安装依赖因为想尽量编一个较全的版本,所以需要安装一些调试协议的依赖库:sudo apt install

2021-01-24 19:05:49 3193 2

转载 gnu链接脚本lds介绍

因为这篇文章被转载了好多手,已经不知道原文在哪里了,觉的看中文比较舒适,就转过来了,感谢原文作者。连接脚本的格式====================连接脚本是文本文件.你写了一系列的命令作为一个连接脚本. 每一个命令是一个带有参数的关键字,或者是一个对符号的赋值. 你可以用分号分隔命令. 空格一般被忽略.文件名或格式名之类的字符串一般可以被直接键入. 如果文件名含有特殊字符...

2018-10-28 14:55:46 407

原创 利用ptmx搭建本地虚拟串口回环测试环境

留个备份,执行这个搭建程序可以在当前目录生成ttyNeo1和ttyNeo2两个互连的虚拟串口,在Linux上写上位机和下位机串口通信程序时就不需要利用物理串口测试了。#define _XOPEN_SOURCE#include #include #include #include #include #include #include #include #i

2017-12-16 13:06:59 1455

原创 基于IMX6Q的XFM10621六麦驱动实现说明

本文主要针对在IMX6Q平台上实现的XFM10621六麦克阵列驱动做了一些介绍和说明,因为科大讯飞没有一个可参考的通用驱动,所以自己就在IMX6Q上实现了一下,相信可以给很多感兴趣的朋友作为参考,具体的驱动源码可以参看附件部分。1. 环境介绍硬件平台IMX6QAndroid版本5.1

2017-11-27 14:32:05 3112

linux-2.4.22.tar.bz2

linux-2.4.22.tar.bz2

2017-03-04

空空如也

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

TA关注的人

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