自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ce123的技术博客

专注于嵌入式软件开发

  • 博客(437)
  • 资源 (24)
  • 收藏
  • 关注

原创 深入浅出GENIVI DLT系统

DLT(Diagnostics Log and Trace)是GENIVI基于LT协议实现的Log和Trace后台程序。Log和Trace和是AdaptiveAutosar中的一个基础模块。本系列博文深入全面的讲解GENIVI的dlt-viewer和dlt-daemon。主要包括以下内容:AUTOSAR LogAndTrace概述 GENIVI DLT编译 GENIVI DLT client GENIVI DLT daemon GENIVI DLT user library GENI.

2020-08-31 05:56:49 4185 2

原创 理解Linux进程/线程的各种ID

通过Linux的top和ps命令中,默认看到最多的是pid (process ID),也许你也能看到lwp (thread ID)和tgid (thread group ID for the thread group leader)等等,而在Linux库函数和系统调用里也许你注意到了pthread id和tid等等。还有更多的ID,比如pgrp (process group ID), sid (session ID for the session leader)和 tpgid (tty process gr

2021-07-25 22:44:06 2381 1

原创 C语言之fileno函数

open函数相关接口(open 是系统调用 返回的是文件句柄):#include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);fopen函数相关接口(open是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api):FILE *fo

2021-07-05 06:11:12 1576

原创 Linux下文件的时间属性

文件主要有三个时间属性:● modification time (mtime,修改时间):这个时间指的是文件内容修改的时间,而不是文件属性的修改,当数据内容修改时,这个时间就会改变,用命令ls -l默认显示的就是这个时间;● status time (ctime,状态时间):当一个文件的状态改变时,这个时间就会改变,例如更改了文件的权限与属性等,它就会改变;● access time(atime,访问时间):当读取文件内容时,就会更改这个时间,例如使用cat 去读取/etc/man.config,那么

2021-06-02 21:20:09 769

原创 嵌入式linux开发中gcc的一些优化编译选项

-Werror编译选项加上-Werror 遇到任何的警告工程将停止编译。-fno-exceptions禁用运行时类型信息。-fno-rtti禁用异常机制,一般只有对程序运行效率及资源占用比较看重的场合才会使用,如果要做这两个的话最好连libstdc++和其他所有的的c++库都用这两个参数重新编译一遍,否则光是你自己的程序禁用了这两个特性,而别的库依然开着,效果就大打折扣了。-fno-threadsafe-statics对于在函数内部声明的static变量,编译器默认是会使得这样.

2021-05-12 06:20:51 1463

原创 BUILD_BUG_ON

在分析io_uring源码的时候发现了这个宏,稍微了解了一下static int __init io_uring_init(void){#define __BUILD_BUG_VERIFY_ELEMENT(stype, eoffset, etype, ename) do { \ BUILD_BUG_ON(offsetof(stype, ename) != eoffset); \ BUILD_BUG_ON(sizeof(etype) != sizeof_field(stype, ename));

2021-05-10 09:26:22 528

原创 gcc的fmessage-length参数

gnu工具链编译过程中,控制台输出的一行信息是不换行的。当输出信息过长时(如编译错误时的信息),会导致你无法看到完整的输出信息。加入-fmessage-length=0后,输出信息会根据控制台的宽度自动换行,这样就能看全输出信息了。...

2021-04-15 20:02:03 761

原创 如何当好一个师长之软件开发篇

目录一、要勤快。二、要摸清上级的意图。三、要调查研究。四、要有个活地图。五、要把各方面的问题想够想透。六、要及时下达决心。七、要有一个很好的很团结的班子。八、要有一个很好的战斗作风。九、要重视政治,亲自做政治工作。刷知乎的时候,看到了《如何当好一个师长》这篇文章,感触很深。做任何事情能做到这个程序,就没有做不成。一、要勤快。不勤快的人办不好事情,不能当好军事指挥员。应该自己干的事情一定要亲自过目,亲自动手。比如,应该上去看的山头就要爬上去,应该了解的情况就要及

2021-03-29 07:04:47 446

原创 mount --bind妙用

在嵌入式系统中,为了系统的稳定性,常将文件系统只读挂载,避免在写文件系统的情况出现异常,导致文件系统破坏.但不少程序默认会往/etc目录写入数据,可以采用mount --bing将一个可读写的目录映射到/etc目录下面,这样既保证了rootfs的稳定性,又不用修改程序的默认行为.#move etc to usrdataMoveEtcToUsrdata() { mkdir -p /usrdata/etc if [ ! -f /usrdata/bind_etc_flag ];then..

2021-03-13 09:31:12 750

原创 系统架构设计师-软件开发模型(构件组装模型)

随着软构件技术的发展,人们开始尝试利用软构件进行搭积木式的开发,即构件组装模型。在构建组装模型中,当经过需求分析定义出软件功能后,将对构件的组装结构进行设计,将系统划分成一组构件的集合,明确构件之间的关系。在确定了系统构件后,则将独立完成每一个构件,这时既可以开发软件构件,也可以重用已有的构件,当然也可以购买或选用第三方的构件。构件是独立的、自包容的,因此架构的开发也是独立的,构件之间通过接口相互协作。构件组装模型的一般开发过程如下图所示。构件组装模型的优点如下:(1)构件的自包容...

2021-02-19 18:47:19 1233 1

原创 系统架构设计师-软件开发模型(增量模型)

演化模型的另一种形式是增量模型。在系统的技术架构成熟、风险较低的时候,可以采用增量的方式进行系统开发,这样可以提前进行集成测试和系统测试,缩短初始版本的发布周期,提高用户对系统的可见度。对于增量模型,通常有两种策略。一是增量发布的办法。即首先做好系统的分析和设计工作,然后将系统划分为若干不同的版本,每一个版本都是一个完整的系统,后一版本以前一版本为基础进行开发,扩充前一版本的功能。在这种策略中,第一版本往往是系统的核心功能,可以满足用户最基本的需求,随着增量的发布,系统的功能逐步地丰富、完善...

2021-02-08 10:04:55 1468

原创 系统架构设计师-软件开发模型(螺旋模型)

瀑布模型看起来很好,随着一个又一个阶段的流过,软件系统就被建立起来了。可是在应用软件开发的过程中,人们发现很难一次性完全理解用户的需求、设计出完美的架构,开发出可用的系统,这是由于人的认知本身就是一个过程,这个过程是渐进的、不断深化的。对于复杂问题,“做两次”肯定能够做得更好。那么,对于软件开发这个复杂而且与人的认知过程紧密相关的事也应该是一个渐进的过程。演化模型正是基于这个观点提出的。一般情况下,一个演化模型可以看做若干次瀑布模型的迭代,当完成一个瀑布模型后,重新进入下一个迭代周期,软件在这样的迭代...

2021-01-24 22:50:06 1636

原创 系统架构设计师-软件开发模型(瀑布模型)

在计算机刚刚诞生的年代,计算机是一种只有天才才能掌握的工具。人们对软件的认知仅仅停留在程序的层面上,所谓的软件开发就是那些能够掌握计算机的天才们写的一些只有计算机才能理解的二进制序列。但随着技术的发展,软件的复杂度不断提高,人们进入了大规模软件开发的时代。这时,人们发现,软件系统已经变得非常复杂,需要遵循一定的开发方法才能取得成功,于是称这些模式化的开发方法为开发模型。顾名思义,瀑布模型就如同瀑布一样,从一个特定的阶段流向下一个阶段,如下图所示。瀑布模型的核心思想瀑布模型认为,软件开...

2021-01-10 21:03:39 3396

原创 系统架构设计师-嵌入式系统设计

简介嵌入式系统是一种以应用为中心,以计算机技术为基础,可以适应不同应用对功能、可靠性、成本、体积、功耗等方面的要求,集可配置,可裁减的软、硬件于一体的专用计算机系统。它具有很强的灵活性,主要由嵌入式硬件平台、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。其中,“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本的核心要素,具体来讲:嵌入性:指计算机计算机嵌入到对象系统中,且满足对象系统的环境要求,如物理环境(小型)、电气/气氛环境(可靠)、成本(价廉)等要求。专用性:...

2021-01-03 22:30:41 653

原创 系统架构设计师-遗留系统

计算机技术飞速发展,日新月异,许多企业因为业务发展的需要和市场竞争的压力,需要建设新的企业信息系统。在这种升级改造的过程中,怎么处理和利用那些历史遗留下来的老系统,成为影响新系统建设成败和开发效率的关键因素之一。通常称这些老系统为遗留系统。目前,学术和工业界对遗留系统的定义没有统一的意见。Bennett 在1995 年对遗留系统做了如下的定义:遗留系统是不知道如何处理但对组织又至关重要的系统。Brodie 和Stonebraker 对遗留系统的定义如下:遗留系统是指任何基本上不能进行修改...

2020-12-27 17:13:47 2702

原创 系统架构设计师-基于架构的软件设计

简介基于架构的软件设计(Architecture-Based Software Design,ABSD)是一种架构驱动方法。这种方法有3 个基础:(1)功能的分解。在功能分解中,ABSD 方法使用已有的基于模块的内聚和耦合技术。(2)通过选择架构风格来实现质量和业务需求。(3)软件模板的使用。软件模板利用了一些软件系统的结构。然而,对于设计方法来说,软件模板的使用是一个新概念,下面,我们进行简单的介绍。软件模板是一个特殊类型的软件元素,包括描述所有这种类型的元素在共享服务和底...

2020-12-20 22:06:20 893

原创 系统架构设计师-软件重用之构件技术

软件重用技术是一种重要的软件开发方法,虽然至今软件重用技术还不够成熟,离理想中的软件工厂还有很长的路要走,但现有的一些重用技术(例如,中间件、应用服务器等)已经改变了开发过程。软件产品与其他的产品不同,是抽象的,一旦产生就可以无限制地复制,因此重复利用软件产品的意义重大,可以节约大量的人力物力。软件重用指的是利用已经存在的软件元素建立新的软件系统,这其中的软件元素既可以是软件产品、源程序,也可以是文档、设计思想甚至是领域知识。软件重用可以直接提高软件的开发效率、降低软件的开发成本、缩短软件的开发周期、.

2020-12-13 00:00:07 1282

原创 系统架构设计师-系统可靠性设计

系统可靠性定义系统在规定的时间内及规定的环境条件下,完成规定功能的能力,就是系统无故障运行的概率。根据国家标准《软件工程 产品质量 第一部分:质量模型》(GB/T 16260.1-2006)的规定,系统可靠性的4个主要子特性成熟性:指系统避免因错误的发生而导致失效的能力。容错性:在系统发生故障或违反指定接口的情况下,系统维持规定的性能级别的能力 易恢复性:系统发生失效的情况下,重建规定的性能级别并恢复受直接影响的数据的能力 依从性:系统依附于可靠性相关的标准、约定和规约的能力。软件可靠性技术

2020-12-06 20:25:23 1043 1

原创 系统架构设计师-软件架构设计

软件架构作为一个有机的整体,可以分解成多个侧面来认识,每个侧面强调它的不同方面的特征,从而使架构设计师能整体地把握它的重点。我们可以将软件架构归纳成5 种模型:结构模型、框架模型、动态模型、过程模型和功能模型。最常用的是结构模型和动态模型。(1)结构模型。这是一个最直观、最普遍的建模方法。这种方法以架构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是架构描述语言。(2)框架模型。框架模型与...

2020-11-28 21:03:23 1149

原创 系统架构设计师-简单分布式计算机应用系统的设计

网络极大地扩展了计算机的应用范围,同时,由于升级到更强的服务器的费用常常远远高于购买多台档次稍低的机器,更何况虽然计算机有了长足的发展,可是单台计算机的功能仍然十分有限,利用联网的计算机协同工作,共同完成复杂的工作成为相对成本较低的选择,而且可以完成单台计算机所无法完成的任务。分布式系统使得这一目标成为可能。另外,网络本质上并不可靠,特别是远程通信,分布式系统还带来了并发和同步的问题。分布式系统可以由两种完全不同的方式来进行协同和合作,第一种是基于实例的协作。这种方式所有的实例都处理自己范围内的数...

2020-11-21 21:43:20 348

原创 系统架构设计师-开发方法之构件组装模型

随着软构件技术的发展,人们开始尝试利用软构件进行搭积木式的开发,即构件组装模型。在构建组装模型中,当经过需求分析定义出软件功能后,将对构件的组装结构进行设计,将系统划分成一组构件的集合,明确构件之间的关系。在确定了系统构件后,则将独立完成每一个构件,这时既可以开发软件构件,也可以重用已有的构件,当然也可以购买或选用第三方的构件。构件是独立的、自包容的,因此架构的开发也是独立的,构件之间通过接口相互协作。构件组装模型的一般开发过程如下图所示。构件组装模型的优点如下:(1)构件的自包容性...

2020-11-15 17:00:46 1034

原创 系统架构设计师-感想

去年年底看到软考项目,突然就像报名,自己该要系统的学习一下架构方面的理论知识。经过大致了解后,确定要报名。今年上半年一直盯着报名的事情,相关的书籍倒是早早就买好了,但因为工作的原因,以及家里的事情,迟迟没有开始复习。6月份报名后,直到国庆假期才开始看书。这段时间忙于复习,都没有更新博客了。这个周末终于考完。考试前两周突击了一下,做好了自己能做好的一切。...

2020-11-10 07:22:11 705 1

原创 C语言环境变量接口

getenv(DLT_USER_ENV_LOCAL_PRINT_MODE);

2020-10-12 08:30:16 1485

原创 __PRETTY_FUNCTION__

https://blog.csdn.net/nuoshueihe/article/details/8243963

2020-10-01 07:44:07 7215

原创 GENIVI DLT viewer的使用

简介DLT的整体架构如下:DLTDaemon是一个后台服务程序;DLTLibrary是用户使用DLT时需要连接的动态库;DLTClient是上位机程序,用于展示日志,比如DLTviewer程序。这三个组件之间的连接方式如下图。DLTviewer采用QT编译,是一个图形程序,功能非常丰富,还可以自己添加插件。DLTViewer编译详细编译参考https://github.com/GENIVI/dlt-viewer中的描述即可。首先安装qt-opensource-wind...

2020-09-21 09:38:51 12513

原创 深入浅出ARM原子操作

概述很多情况下我们只是需要一个简单的、高效的、线程安全的递增递减方案。简单,意味着程序员尽可能少的操作底层或者实现起来要比较容易; 高效意味着耗用资源要少,程序处理速度要快; 线程安全也非常重要,这个在多线程下能保证数据的正确性。这三个条件看起来比较简单,但是实现起来却难以令人满意。原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为"不可被中断的一个或一系列操作" 。此外,在多处理器上实现原子操作就变得更复杂。相关术语定义如下:

2020-09-13 15:45:06 4427

原创 栈信息统计

局部变量和函数调用关系都需要保持在栈,如果局部变量过大,或函数调用关系过深(递归或者嵌套调用)则很容易导致栈异常。程序需要使用的栈空间大小,可以在程序编译时就确认。下面列举RVCT和GCC两种编译器查看栈信息的方法,其他编译器也有类似的功能。RVCTarmlink最后链接程序时,使用-callgraph参数。-callgraph 该选项创建一个HTML格式的静态函数调用图。这个调用图给出了映像文件中所有函数的定义和引用信息。对于每一个函数它列出了: 1. 函数编译时候的处理器状态(ARM..

2020-08-16 23:02:43 870

原创 ARM9嵌入式Linux开发-嵌入式GUI开发

GUI的一般架构图形用户界面GUI(Graphics User Interface)是迄今为止计算机系统中最为成熟的人机交互技术。一个好的图形用户界面的设计不仅要考虑到具体硬件环境的限制,而且还要考虑到用户的喜好等。由于图形用户界面的引入主要是从用户角度出发的,因此用户自身的主观感受对图形用户界面的评价占了很大比重,比如,易用性、直观性、友好性,等等。另外,从纯技术的角度看,仍然也会有一些标准需要考虑,比如,跨平台性、对硬件的要求等。在嵌入式系统开发和应用中,我们所考虑的问题主要集中在图形用户界面对

2020-08-09 23:17:27 1200

原创 ARM9嵌入式Linux开发-FrameBuff和LCD驱动移植

FrameBuffFrameBuffer介绍FrameBuffer直译就是,帧缓冲。 Frame(帧):所看到的屏幕上的图像,或者在一个窗口中的图像,就叫一帧。 Buffer(缓冲):一段RAM,用来暂存图像数据,这些数据会被直接写入到显示设备。 帧缓冲就相当于图形操作和图像输出中间的一个介质,将程序对图形数据的处理操作反馈到显示输出上。LCDC是将系统需要显示的数据经过处理后输出到LCD显示驱动器的液晶显示控制模块 ,在用户初始化配置后,LCDC将自动进行读取数据、缓存数据、处理

2020-08-02 17:04:18 1117 1

原创 ARM9嵌入式Linux开发-内存与IO操作

Linux内存管理地址类型用户虚拟地址用户空间程序所能看到的常规地址 每个进程都有自己的虚拟地址空间物理地址CPU使用的是物理地址,在CPU的地址信号线上产生的就是物理地址。总线地址总线地址,顾名思义,是与总线相关的,就是总线的地址线或在地址周期上产生的信号。外设使用的是总线地址。基于DMA的硬件使用总线地址而非物理地址。该地址在外围总线和内存之间使用 它实现总线和主内存之间的重新映射 通常它们与处理器使用的物理地址相同Linux采用虚拟内存管理技术,使得每个进程都

2020-07-26 21:45:48 595

原创 ARM9嵌入式Linux开发-Linux设备驱动的IO操作

字符设备的I/O模型一个字符设备的主要功能是用来实现I/O操作,反映到应用程序中就是进行读/写等相关的操作。在对一个设备进行读写操作时,由于设备在实际的操作中响应速速各不相同,因此数据并不总是在任何时候都可用:对于读操作来说,也许请求的数据还没有到达设备的缓冲区; 对于写操作来说,应用层传递过来的数据也许不能一下子全部放进设备的缓冲区。此时对读写操作来说,要么放弃等待直到返回一个错误码给上层,要么让发起读写操作的进程进入等待状态直到数据可用为止。根据不用的需求和使用场景,Linux内核支持几

2020-07-19 08:07:00 573

原创 ARM9嵌入式Linux开发-并发控制、中断处理

并发控制并态、竞态和临界区并发(concurrency)指的是多个执行单元同时、并行被执行。 并发的执行单元对共享资源(硬件资源、全局变量、静态变量等)的访问很容易导致竞态(race condition)。 访问共享资源的代码区域成为临界区(critical sections),临界区必须用某种互斥机制加以保护。 造成竞态的主要原因: 对称多处理器(SMP) (SMP是一个紧耦合、共享存储的系统模型。特点是多个CPU使用共同的系统总线,可以访问共同的外设和存储器。) 进程调度与抢占(Li

2020-07-12 07:52:53 393

原创 ARM9嵌入式Linux开发-Linux设备管理和驱动开发基础

设备驱动概述Linux设备分类Linux系统的设备分为三类:字符设备、块设备和网络设备: (1)字符设备通常指像普通文件或字节流一样,以字节为单位输入输出数据的设备,如并口设备、虚拟控制台等。字符设备可以通过设备文件节点访问,它与普通文件之间的区别在于普通文件可以被随机访问(可以前后移动访问指针),而大多数字符设备只能提供顺序访问,因为对它们的访问不会被系统所缓存。但也有例外,例如帧缓存(FrameBuffer)是一个可以被随机访问的字符设备。(2)块设备通常指一些需要以块为单位随机读..

2020-07-05 06:50:51 539

原创 ARM9嵌入式Linux开发-构建嵌入式Linux根文件系统

安装BusyBox在主机上新建一个目录,比如myroot,用于存放开发板的根文件系统。编译安装后BusyBox,将其中_install中的bin、sbin目录和linuxrc复制到myroot中。linuxrc、bin和sbin中所有命令都是bin/BusyBox的符号链接。构建etc目录init进程根据/etc/inittab文件创建其他子进程,比如调用脚本文件配置IP地址,挂载其他文件系统,启动shell和应用程序等。 etc目录中的文件主要取决于要运行的程序,在本文章中是创...

2020-06-28 22:43:27 438

原创 ARM9嵌入式Linux开发-嵌入式Linux根文件系统概述

Linux中一切皆文件! 是指:在Linux系统中,各个部分都可把它看成是一个文件,包括了所有的硬盘分区、目录、软盘、CD-ROM光盘和其他存储介质,以及显示器和打印机等硬件设备都可被看成一个文件。 从本质上而言,用户的一切工作就是对文件的操作。嵌入式Linux文件系统嵌入式文件系统的需求分析文件系统是指在一个物理设备上的任何文件组织和目录,它构成了Linux系统上所有数据的基础,Linux程序、库、系统文件和用户文件都驻留其中,并向用户或程序提供一个使用文件的统一界面,从而能...

2020-06-20 16:28:12 519

原创 ARM9嵌入式Linux开发-基于S3C2440的Linux内核移植

概述所谓移植就是把程序代码从一种运行环境转移到另外一种运行环境,主要是从一种硬件平台转移到另外一种硬件平台上。由于开发板硬件的变化,内核移植是嵌入式linux系统中最常见的一项工作。内核移植主要是修改跟硬件平台相关的代码,添加驱动,一般不涉及linux内核通用的程序。和体系结构相关的代码在arch目录下按照不同的体系结构管理。移植Linux内核需要熟悉内核的目录结构、启动流程以及裁剪、配置并编译内核的方法,最终将编译好的内核下载到开发板上运行起来。将Linux运行在S3C2440上,即称为Lin

2020-06-13 19:13:39 729

原创 ARM9嵌入式Linux开发-基于S3C2440的Linux启动概述

架构/开发板相关的引导过程我们要将Linux内核移植到S3C2440(arm9)平台上,和移植U-Boot一样,在移植Linux内核之前,我们先了解Linux内核的启动过程,我们这里以S3C2440平台为例。 典型的内核映像是zImage,包含自引导程序和压缩的vmlinux两部分。启动过程也就是解压和启动vmlinux的过程。我们主要讲解vmlinux的启动过程。对于其他格式的内核,比如zImage、bzImage等,它们都要进行自解压得到vmlinux,然后执行vmlinux的启动过程。...

2020-06-07 17:22:40 608 2

原创 ARM9嵌入式Linux开发-Linux基础知识

目录1 Linux简介1.1 Linux的内核版本1.2 Linux的发展历史1.3 Linux的发行版本1.4 Linux内核源码目录结构2 Linux内核的配置和编译2.1 Linux的配置2.2 Linux内核的编译2.2.1 Linux的Makefile体系2.2.2 Linux内核文件编译2.2.3 Makefile如何决定编译哪些文件2.3.4 Makefile是怎样编译这些文件的?2.3.5 Makefile是怎样连接这些文件2...

2020-05-31 07:11:19 749

原创 ARM9嵌入式Linux开发-U-Boot移植

1 为什么需要对U-Boot做移植BootLoader依赖于具体的嵌入式板级设备的配置。每种不同的CPU体系结构都有不同的BootLoader。除了依赖于CPU的体系结构外,BootLoader 还依赖于具体的嵌入式板级设备的配置,比如板卡的硬件地址分配,外设芯片的类型等。这也就是说,对于两块不同的开发板而言,即使它们是基于同一种CPU而构建的,但如果他们的硬件资源或配置不一致的话,要想在一块开发板上运行的BootLoader程序也能在另一块板子上运行,还是需要作修改。2 移植关键技术2.1 U

2020-05-24 07:16:32 627

原创 ARM9嵌入式Linux开发-U-Boot分析

目录1 再讲系统启动与BootLoader2 U-Boot简介3 U-Boot代码分析3.1 获取U-Boot源码3.2 U-Boot源码结构3.3 U-Boot配置3.4 U-Boot编译3.5 U-Boot连接3.5.1 lds文件简介3.5.2 U-Boot.lds的分析3.6 U-Boot启动过程源码分析4 U-Boot引导操作系统分析4.1 U-Boot命令的基本格式和执行过程4.2引导Linux4.2.1 mkimage简介4.2.

2020-05-17 16:30:17 697

dlt-viewer_2.20.0

GENIVI DLT Viewer,已经编译好了,可以直接使用,结合博客一起使用. https://ce123.blog.csdn.net/article/details/108314216

2020-09-21

U-Boot详细移植过程.doc

U-Boot详细移植过程 配合文档https://ce123.blog.csdn.net/article/details/104141326看

2020-05-24

ARM9嵌入式Linux开发-LCD

ARM9嵌入式Linux开发-LCD https://ce123.blog.csdn.net/article/details/104141326

2020-04-26

adc_ts.rar

ARM9嵌入式Linux开发-ADC和触摸屏 博客地址:https://blog.csdn.net/ce123_zhouwei/article/details/105776841

2020-04-26

ARM9嵌入式Linux开发-I2C接口

ARM9嵌入式Linux开发-I2C接口,文档地址: https://ce123.blog.csdn.net/article/details/104141326

2020-04-05

ARM9嵌入式Linux开发-通用异步收发器UART

ARM9嵌入式Linux开发-通用异步收发器UART,文章地址 https://ce123.blog.csdn.net/article/details/105328492

2020-04-05

ARM9嵌入式Linux开发-系统时钟和定时器

ARM9嵌入式Linux开发-系统时钟和定时器的demo 结合博客一起看https://ce123.blog.csdn.net/article/details/105172923

2020-03-29

ARM9嵌入式系统学习-中断体系结构

ARM9嵌入式系统学习 中断体系结构,结合博客一起看,博客的地址为 https://ce123.blog.csdn.net/article/details/105027063

2020-03-22

ARM9嵌入式系统学习-NADN FLASH控制器源码

ARM9嵌入式系统学习 NADN FLASH控制器的源码,结合博客一起看,博客的地址为 https://ce123.blog.csdn.net/article/details/104872847

2020-03-15

简易堆分配器

自己实现了简易堆分配器,经过测试可以使用.如果大家在使用的过程中发现问题,还请告诉我.

2014-03-21

linux下多线程文件服务器

linux下多线程文件服务器 http://blog.csdn.net/ce123_zhouwei/article/details/17066313文章的附件

2013-12-24

AMR音频文件格式分析(AMR音频文件)

AMR音频文件格式分析(AMR音频文件)

2013-12-12

winmanager

Vim的winmanager插件,vim主页打不开,上传上来,免费供大家下载

2013-09-21

taglist_45.zip

Vim的TagList插件,vim主页打不开,上传上来,免费供大家下载

2013-09-21

GeekOSproject3

GeekOS的project3,结合博客中有一篇文章对其进行了详细分析,希望对大家有帮助(http://blog.csdn.net/ce123/article/details/6581275#comments).

2013-03-20

arm栈帧回溯

arm栈帧回溯,自己实现arm-linux下的栈帧回溯,没有使用glibc的backstrace()和backtrace_symbols(),可以很好的调试segment fault问题。

2013-02-13

图解__arch_copy_from_user函数

图解__arch_copy_from_user函数,可以很清楚的数据的拷贝过程。

2013-01-08

图解ARM-Linux的启动全过程_修正版

图解ARM-Linux的启动全过程:内核自解压阶段——>内核引导阶段——>内核初始化阶段——>BusyBox初始化阶段。

2012-05-04

图解ARM-Linux的启动全过程

图解ARM-Linux的启动全过程:从内核的自解压到引导阶段,再到内核初始化,自后是文件系统的初始化。

2012-05-04

图解U-Boot:第二阶段源码分析

图解U-Boot:第二阶段源码分析(清晰)

2012-03-04

S3C2440时钟详细描述

S3C2440时钟详细描述 S3C2440时钟详细描述

2011-03-15

基于ARM和Linux的嵌入式远程视频监控系统设计.pdf

基于ARM和Linux的嵌入式远程视频监控系统设计

2011-03-15

Win32汇编语言简明教程

Win32汇编语言简明教程(适合反向工程和反病毒方向读者)

2011-01-17

grub4dos初级教程图文版

grub4dos初级教程图文版,非常适合初学者

2011-01-17

空空如也

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

TA关注的人

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