自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (2)
  • 收藏
  • 关注

原创 ldd3 examples

下载地址:https://github.com/ZhuXiaolin1986/LDD3-examples已移植至 linux-4.15,可在Ubuntu 16.04 / 18.04上编译、测试。

2018-08-13 22:39:49 457

原创 生命游戏(c语言)

1968年,剑桥大学英国数学家John HortonConway发明了一个生命游戏。一个二维矩形的M*N网格世界,这个世界中的每个方格中住着一个活着的细胞或死了的细胞。一个细胞在下一个时刻的生死取决于相邻8个方格中活着的细胞的数量。如果相邻方格中活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围的活细胞过少,这个细胞会因为太孤单而死去。游戏的规则就是:当一个方格周围有2

2013-08-23 13:48:58 3132

原创 开发板与pc之间的文件传输:kermit and lrzsz

假定你已经搞定了kermit,下载 lrzsz-0.12.20.tar.gz,百度下就能找到。安装:1. 解压 lrzsz-0.12.20.tar.gz;cd lrzsz-0.12.202. 配置: ./configure --host=arm-linux(根据自己情况)3. make CC=arm-none-linux-gnueabi-gcc LDFLAGS=-static4

2013-08-19 16:26:30 1824

原创 ALSA 接口编程实例——语音聊天

/* 本程序维护一个 256bytes*4 缓冲区,两个信号量保护(读和写)。创建两个线程,一个用于采集声卡数据并写到缓冲区,数据采集线程使用ALSA接口编程,设置采样率 22333,周期帧数 128,帧格式 U8,声道数 2,每个周期大约 5.73ms,每个周期 256bytes。另外一个将缓冲区数据广播到网络,每次发送 256bytes。*/#define ALSA_PCM_N

2013-07-21 21:25:56 2632 3

原创 Linux平台下搭建OgreKit on Android开发环境

1. 准备创建文件夹Androidsvn 获取gamekit源码: gamekit.googlecode.com/svn/trunk/下载android-sdk-linux下载android-ndk下载eclipse将获取的android sdk、ndk、eclipse分别放到Android文件夹下2. 编译gamekit(1) 设置环境

2013-03-26 09:15:22 1079

原创 Blender插件简单示例

编写插件:1.bl_info = {...}这部分在blender官网文档有介绍2. class Test(bpy.types.Operator): '''Add a Layout.''' bl_idname = "object.test_operator_add" bl_label = "AddOperator" bl_

2013-03-26 09:11:52 2321

原创 STL之迭代器及traits编程

不论是泛型思维或STL的实际运用,迭代器都扮演着重要的角色。STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一贴胶着剂将他们撮合在一起,这就是iterator!iterator是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便是内容提领(dereference) 和成员访问(member access),因此,迭代器最重要的编程工作就是对 operator* 和

2013-03-26 09:04:19 856

原创 STL之空间配置器

空间配置器隐藏在STL组件的背后,默默奉献,十分低调。整个STL的操作对象都存放到容器之内,而容器一定需要配置空间以置放数据,需要空间配置器分配内存。    C++的内存配置的基本操作是 new 和 delete。这两个全局函数相当于C的 malloc 和 free 。SGI正是以这两个函数完成内存的配置与释放。        考虑到小型区块所可能造成的内存破碎问题,SGI设计了双层级

2013-03-26 08:58:51 827

原创 Linux系统调用

系统调用是应用程序与操作系统内核之间的接口,它决定了程序如何与内核打交道的。无论程序是直接进行系统调用,还是通过运行库,最终还是会到达系统调用这个层面上。x86系统下,Linux系统使用0x80号中断作为系统调用的入口。EAX寄存器用于表示系统调用的接口号,比如EAX=1表示退出进程,EAX=2表示创建进程,EAX=3表示读取文件,EAX=4表示写文件等。每一个系统调用都对应于内核代码中的一个函数

2013-03-26 08:49:48 1027

原创 Linux内存布局

Linux下一个进程里典型的内存布局:一般来讲,程序使用的内存空间里有如下默认的区域:栈:用于维护程序上下文堆:用来容纳应用程序动态分配的内存区域可执行文件映像:可执行文件在内存里的映像保留区:内存中受到保护而禁止访问的内存区域的总称    栈,在程序运行中具有举足轻重的地位。它保存了一个函数调用所需要的维护信息,这常常被称为堆栈帧或活动区域。堆栈帧一般包括如下

2013-03-26 08:47:57 958

原创 Windows下动态链接

Dll即动态链接库,相当于Linux下的共享对象。Windows下的类ELF文件称为PE文件,它属于PE/COFF格式。    PE里面有两个常用的概念,基地址和相对地址(RVA);当一个PE文件被装载时,其进程地址空间中的起始地址就是基地址,任何一个PE文件都有一个优先加载的基地址,PE文件头中的Image Base。    通过简单示例,了解DLL的创建和使用,其中最基

2013-03-26 08:45:28 840

原创 Linux下动态链接

Linux系统中,ELF动态链接文件被称为动态共享对象(DSO),简称共享对象,它们一般都是以“.so”为扩展名的一些文件;Windows中,动态链接文件被称为动态链接库(.dll)。下面是一个简单的例子:[cpp] view plaincopy#include "lib.h"  int main()  {      foobar(1

2013-03-25 17:34:31 1131

原创 可执行文件的装载

这里,我们从OS的角度来阐述一个可执行文件如何被装载,并且同时在进程中执行。一个可执行文件从装载到执行,最开始只需要做三件事情:创建一个独立的虚拟地址空间读取可执行文件头,并且建立虚拟空间与可执行文件的映射关系将CPU指令寄存器设置成可执行文件的入口地址,启动运行Linux下,创建虚拟地址空间只是分配一个页目录就可以了,甚至不设置页映射关系。当程序发生页错误时,OS将从物理内存中分

2013-03-25 17:04:54 1279

原创 静态链接

当我们有两个目标文件时,如何将它们链接起来形成一个可执行文件?使用以下两个源代码文件作为例子展开分析: // a.cextern int shared;int main(){ int a = 100; swap(&a, &shared);}// b.cint shared = 1;void swap(int* a, int* b){ *a

2013-03-25 16:59:21 905

原创 目标文件

现在PC平台流行的可执行文件格式主要是Windows下的PE(Portable Executable)和Linux下的ELF(Executable Linkable Format),它们都是COFF(Common file format)格式的变种。目标文件就是源代码编译后但未链接的那些中间文件,它跟可执行文件的内容与结构很相似,一般跟可执行文件格式采用同一种格式存储     动态链接库、静态

2013-03-25 16:47:40 1095

LDD3-examples for kernel_4_15

Linux Device Drivers 3 examples updated to work with kernel 4.15 now. These could be run on Ubuntu 16.04 / Ubuntu 18.04

2018-11-07

JZ2440 u-boot移植(2014-04-14)

JZ2440 u-boot移植之patch文件: 适用于JZ2440-V2 u-boot版本为2014-04-14

2014-06-25

空空如也

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

TA关注的人

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