自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

时间文盲的记事板

有志,有识,有恒

  • 博客(103)
  • 收藏
  • 关注

转载 嵌入式基础:不归零编码(Not Return to Zero, NRZ)

转载于博文:《不归零编码NRZ》,非常好的一篇基础介绍文章,通俗易懂!

2017-10-22 22:29:58 7921

原创 STM32学习笔记(一):起笔,从GPIO开始

呵呵,回首这大半年的变化,确实都有点让自己惊讶。单说工作,换了新的环境,工作内容也开始了新的接触。近来开始搞起STM32的板子,因为之前有过一些MCU的经验,上手比较适应。不过,凡事落到实处,不了解的内容居多。这些日子利用些时间上网搜索资料学习,看着别人的博文,于是也有了记录的想法,并且可以作为内容梳理,是以起笔。

2017-10-18 22:56:56 615 1

转载 基于MCP2515的Linux CAN总线驱动程序设计(三)

上篇文章介绍了使用SPI子系统设计的基于MCP2515的Linux CAN总线驱动程序,这篇文章主要介绍MCP2515的字符设备驱动功能函数的实现。

2017-09-28 22:02:02 1203

转载 基于MCP2515的Linux CAN总线驱动程序设计(二)

本文使用华清远见FS2416平台。FS2416使用Socket网络设备驱动和字符设备驱动两种方式向Linux内核提供MCP2515的驱动,上篇文章介绍了使用Socket方式设计的基于MCP2515的Linux CAN总线驱动程序,这篇文章主要介绍编写一个MCP2515的字符设备驱动。

2017-09-27 23:24:07 672

转载 基于MCP2515的Linux CAN总线驱动程序设计(一)

Socket CAN是在Linux下CAN协议实现的一种实现方法。Linux下最早使用CAN的方法是基于字符设备来实现的,与之不同的是Socket CAN使用伯克利的Socket接口和Linux网络协议栈,这种方法使得CAN设备驱动可以通过网络接口来调用。Socket CAN的接口被设计的尽量接近TCP/IP的协议,让那些熟悉网络编程的程序员能够比较容易的学习和使用。

2017-09-26 19:34:33 880

原创 NCURSES库若干问题研究

最近几天继续手头自己的xcon终端程序,遇到了输入方向键及退格删除键时的若干问题。在解决处理这些问题的过程中,逐步接触到了NCURSES库,所以记录下。

2017-08-27 11:44:38 354

原创 Linux驱动笔记:MTD子系统

+1

2017-07-27 22:15:34 368

原创 Linux驱动笔记:SPI驱动

欠债+1。。。

2017-07-13 20:14:10 400

原创 ucLinux中缓存机制研究(基于无MMU的MCU)

欠债+1

2017-06-28 00:54:00 441

原创 Linux驱动笔记:I2C核心、总线与设备驱动

欠债+1

2017-05-31 23:22:40 321

原创 最重要的事

我爱你们!

2017-05-31 23:19:11 353

原创 ARM架构栈帧回溯实践

欠债+1

2017-04-27 22:29:47 1764

原创 链接、装载与库:ELF文件解析实践

欠债+1。

2017-04-26 01:00:17 447

原创 uClinux中FLT文件格式浅析

又欠下的一片文章。

2017-04-21 16:56:39 7847

原创 Linux系统编程:伪终端

前言    这个月太忙,博文需要更新,先占坑,后补位。

2017-03-29 00:54:18 483

转载 关于编译的一些事儿:加速Linux程序编译(转)

set -e:表示如果任何一句shell语句的执行结果不是true,则立即退出;-MM   :不使用-M,表示不将标准库头文件包含进依赖关系里"$$$$"  :表示为一个随机编号$*    :表示目标模式中"%"及其之前的部分。这里,"$*"的值就是".o"之前的字符串sed 's,\($*\).o[ :]*,$(SUB_OBJS_DIR)/\1.o $@ :,g':这里用到sed的替

2017-03-05 12:41:48 697

原创 关于编译的一些事儿:从头开始整理一套编译框架(二)

前言Demo执行文件的编译,可以直接参考网上通用的Makefile万能模版,这也算是一种简单的应用实践。之后,开始考虑随着Demo开发工作的推进,源码文件增多,甚至目录结构调整的场景。这个时候,Makefile的扩展性就显得十分必要,因为要能够让开发人员对Makefile进行最少、最傻瓜式的修改(甚至做到不修改),就能继续保持Demo编译工作的顺畅。我们的工作则是抽取一套编译框架,

2017-03-05 12:02:13 1660

原创 关于编译的一些事儿:从头开始整理一套编译框架(一)

前言    但凡接触过Makefile的同学,我想陈皓的《跟我一起写Makefile》必不陌生,其概述中的一句话我印象比较深,“会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力”。这两年以来,我一直在做产品支撑方面(系统级项目)的开发和维护,无论是底层驱动(Boot/BSP/Kernel)还是上层应用,编译方面的事情也参与了不少,认识上也是大有长进。对于我所接触的

2017-02-26 10:40:14 1036

原创 关于编译的一些事儿

关于编译的一些事儿    一个烂笔头用的着的地方,记录工作中经历的编译方面的po事儿,仅此而已...

2017-02-25 21:40:19 1250

原创 螺旋式上升

工作两年多,上来转一转,逛逛曾经关注博友的文章更新,再看着草稿箱中好几篇没来得及完成的博客、转载,真正是怀念以前那段边学习边写博客的日子。14年8月,信心满满。16年12月,依旧信心满满。用了两年时间的工作实践,确定未来的技术选择,从此以后,只管专注。圣诞快乐!

2016-12-24 23:55:33 879

转载 Linux下/proc目录简介

/proc目录简介              Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。       用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态

2016-03-03 23:12:31 713

原创 链接、装载与库:MiniCRT移植

简介     《程序员的自我修养》最后一章中有个小型C运行库(MiniCRT)的实现,于是想着至少要亲自手动再实现一遍。在实现的整个过程中碰到了一些编译执行的问题,这里做下记录总结。其中,《MiniCRT 64位 Linux系统移植记录》(下文简称《记录》)这篇博文为我提供了很大的帮助,在此表示感谢。

2015-05-23 18:30:08 1698

原创 链接、装载与库:运行库

简介       本篇简单介绍下运行库,并总结下一个程序的最终运行环境。入口函数       操作系统装载程序之后,并不是马上从main()函数开始。程序运行的第一行代码是从ELF可执行文件头中的入口地址开始的。从入口地址开始的代码,会负责准备好main函数执行所需要的环境,并且负责调用main函数。之后,你才可以放心的在main函数中申请内存、使用系统调用,访

2015-04-14 19:31:00 845

原创 链接、装载与库:动态链接

简介       本篇整理了动态链接相关的原理、整个链接和装载的过程。为什么要动态链接       1. 静态链接的方式对于内存和磁盘空间浪费严重。例如,使用静态链接的每一个C程序都将自己保留一份C静态库。       2. 使用静态链接方式的程序一旦有任何模块的更新或微小的改动,都需要整个程序重新编译链接以及发布。动态链接

2015-04-11 21:02:10 973

原创 《剑指Offer》:求字符串的排列

前言       顺便将字符串的排列一起写上。题目:        求字符串(或n个字符)的所有排列。比如,输入abc,则它的组合有abc,acb,bac,bca,cab,cba。解决思路:       还是同样的思路,将字符串分成两个部分:第一个字符和剩下所有字符。然后,       第一步,求所有可能出现在第一个字符位置的字符,即把第

2015-04-11 13:33:56 706

原创 《剑指Offer》:求字符串的组合

前言       最近一个月多的时间一直在刷剑指Offer,刚做到第28题 -- 字符串的排列。然后,在做扩展题的时候,来了个神来之笔,心情大好,分享下。题目:        求字符串(或n个字符)的所有组合。比如,输入abc,则它的组合有a,b,c,ab,ac,c,abc。解决思路:       求字符串的组合问题,可以分解成求

2015-04-11 13:17:41 768 1

原创 《王垠博客》·简评·摘抄

简介      王垠这个人,从他的博文来看,是真正的特立独行,有自己的思想的,更重要的是,我很喜欢这种人,说不清为什么。。。(详细还是百度好些)       写点这个,是因为平时看的各种文章一看即过,自己没有意识,更谈不上思考。所以,利用下这点小小的时间,试验一段时间,亦或者纯粹是为了自己好玩,就是这样。《编程的宗派》函数式编程,听着就很高大上。。虽然我不太懂,但我

2015-04-05 22:32:49 1775

原创 链接、装载与库:可执行文件的装载

简介       本篇从操作系统的角度,整理下整个可执行文件的装载过程。       目前的操作系统对可执行文件的装载基本都采用页映射的动态装入方式。所谓页映射方式是指将内存和磁盘中的数据和指令均以“页”为单位进行装载操作。可执行文件装载       一个程序被执行最通常的情形是,创建一个进程,然后装载相应的可执行文件,最后程序运行。这样的一个过程,主要涉及

2015-04-02 22:10:54 860

原创 链接、装载与库:静态链接

前言 上一篇其实是对一个章节主线内容的小小总结,之所以打算写这些简单的总结,是因为发现自己一本书即便看了两三遍,也还是不能系统性的将知识点串联在一起。与其花时间往往复复的翻看,不如把每章的重点简要整理下。这篇是关于生成可执行文件的一个核心内容:链接,从静态链接开始。简介 可执行文件(即程序)是由链接器将输入的目标文件加工再组合而成。由上篇内容的ELF文件结构描述基本也可以了解到,生成可执行文件的本质是将各输入目标文件各个相似段的内容进行合并,比如最重要的代码段和数据段

2015-03-24 22:00:11 732

原创 链接、装载与库:Linux下的ELF文件

简介    ELF(Execuable Linkable Format)文件,即可执行可链接格式的文件。    在Linux系统中,目标文件(即源码编译后的但是未进行链接的中间文件)、可执行文件、动态链接库均按照可执行文件格式存储,静态链接库稍有不同,但是它也是由多个目标文件捆绑在一起,再加上一些索引等而形成的文件。    根据ELF文件标准,将Linux系统中采用

2015-03-21 18:23:11 951

原创 C++学习与实践(四):类的初始化

前言这两周的任务做测试,实质就是熟悉设备调试环境,晚上时间在杂书及《北平无战事》上面花费比较多,周末也都有了骑行活动安排,学习上面自然稍微拖了后腿。废话不多说,继续基础知识。类的初始化类的初始化两种:显示初始化表、调用构造函数。显示初始化优缺点:显示初始化只能被应用在所有数据成员都是public的类对象上;显示初始化是根据数据成员被声明的顺序来解析,增加意外与错误的可能性;通过显示初始化,用常量值给大型数据结构直接赋值比较有效;

2014-11-23 18:31:18 906

原创 C++学习与实践(三):类

前言记录看到的知识点前言记录看过的知识点,有太多东西需要学习,一件一件来吧。类1,类包含类头和类体。类头由关键字class及其后面类名构成;类体由一对花括号包围起来。类定义后面必须接分号或声明;2,在类体中对类的数据成员和成员函数进行声明,并指定这些成员的访问级别。类体中所有成员构成类成员表;3,类成员访问级别实质是为了信息隐藏,即防止程序的函数直接访问类类型的内部表示而提供的一种形式化机制。访问级别通过访问限定符:public/private/protected指定:

2014-11-08 20:37:32 986

原创 解决VMware安装Ubuntu黑屏问题

现象问题:VMware安装Ubuntu成功,输入密码成功登录后黑屏。(网上搜索,各种答案都不靠谱,所以这里再给出一种亲身解决方法!)

2014-11-04 22:44:58 13160 5

原创 C++学习与实践(二):vector类型与iterator迭代器

前言这周基本在看项目代码及其中的类图关系,都还过的去。继续补上之前的基础,相当于再次复习。vector类型简单来说,vector类型类似于C语言的数组类型,表示一段连续的内存区域,每个元素被顺序存储在该段内存中。随机访问效率高。vector类型两种习惯用法:数组习惯(与C数组用法一致,略)和STL习惯。

2014-11-02 23:06:43 1084

原创 解决Windows下Git Shell编辑器问题

前言 最近开始重新用Git Shell,因为中途编辑器从之前的UltraEdit换成了Notepad++,所以在用git commit命令提交时,出现了一个诡异的问题:直接返回“Aborting commit due to empty commit message.” 如图示:

2014-10-22 00:36:57 2018 2

原创 C++学习与实践(一):const引用与string类型

前言 即将开展的任务主打C++,不敢说以前没有接触,但实在都是零散的了解(与能参与项目开发还有非常大差距),所以打算从头开始C++的学习与实践,在此记录过程。知识重点昨天通过一道题目的练习,基本理解并掌握以下几个知识点:

2014-10-19 16:32:20 2175 1

原创 编程,艺术 or 科学?

在一个微社区帖子里讨论这个话题:编程,艺术 or 科学?

2014-10-15 22:17:28 1446

原创 解决Windows下Git Shell升级问题

升级Git Shell,随之而来的就是这个告警了。如图示:警告: git command could not be found. Please create an alias or add it to your PATH.

2014-10-14 23:43:10 2489

原创 TDD练习:保龄球计分

前言培训遗留作业,计划放在国庆空闲时间做,所以这算是走计划节奏。另外,真的是不喜欢做这些题,虽然实现以后发现很简单。但是没实现之前,多少还是觉得有些困难,可能是自己做题天少。。(不知道别人做题时候啥感觉)另外,做这些题我是感觉完全搭不上算法的边,可能是我自己没专门学过的原因吧,基本上纯粹是按照题的说明需求,然后自己思考,整理思路,然后实现...过程就是这样。

2014-10-05 19:46:56 2768

原创 TDD培训回演:四则运算(总结)

前言上周末参加了一次代码培训,首次接触了TDD(Test -Driven Development)开发方式。总的来说,能够接受一种新的编程思想,收获不小。本来是打算当天回家就做下培训内容的总结,结果回家有了其他活动,然后拖到这两天。先是抽时间把培训内容代码的演练自己搞了一遍,主要是回忆整个开发的过程,然后在这里我再记录下,分享TDD开发的魅力。关于TDD介绍的文章网上很多,想了解下的同学可以参考下这篇博文《浅谈测试驱动开发(TDD)》。

2014-09-27 15:15:36 2037

空空如也

空空如也

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

TA关注的人

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