- 博客(15)
- 资源 (2)
- 收藏
- 关注
原创 ldd3 examples
下载地址:https://github.com/ZhuXiaolin1986/LDD3-examples已移植至 linux-4.15,可在Ubuntu 16.04 / 18.04上编译、测试。
2018-08-13 22:39:49
550
原创 生命游戏(c语言)
1968年,剑桥大学英国数学家John HortonConway发明了一个生命游戏。一个二维矩形的M*N网格世界,这个世界中的每个方格中住着一个活着的细胞或死了的细胞。一个细胞在下一个时刻的生死取决于相邻8个方格中活着的细胞的数量。如果相邻方格中活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围的活细胞过少,这个细胞会因为太孤单而死去。游戏的规则就是:当一个方格周围有2
2013-08-23 13:48:58
3221
原创 开发板与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
1923
原创 ALSA 接口编程实例——语音聊天
/* 本程序维护一个 256bytes*4 缓冲区,两个信号量保护(读和写)。创建两个线程,一个用于采集声卡数据并写到缓冲区,数据采集线程使用ALSA接口编程,设置采样率 22333,周期帧数 128,帧格式 U8,声道数 2,每个周期大约 5.73ms,每个周期 256bytes。另外一个将缓冲区数据广播到网络,每次发送 256bytes。*/#define ALSA_PCM_N
2013-07-21 21:25:56
2968
原创 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
1129
原创 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
2509
原创 STL之迭代器及traits编程
不论是泛型思维或STL的实际运用,迭代器都扮演着重要的角色。STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一贴胶着剂将他们撮合在一起,这就是iterator!iterator是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便是内容提领(dereference) 和成员访问(member access),因此,迭代器最重要的编程工作就是对 operator* 和
2013-03-26 09:04:19
918
原创 STL之空间配置器
空间配置器隐藏在STL组件的背后,默默奉献,十分低调。整个STL的操作对象都存放到容器之内,而容器一定需要配置空间以置放数据,需要空间配置器分配内存。 C++的内存配置的基本操作是 new 和 delete。这两个全局函数相当于C的 malloc 和 free 。SGI正是以这两个函数完成内存的配置与释放。 考虑到小型区块所可能造成的内存破碎问题,SGI设计了双层级
2013-03-26 08:58:51
884
原创 Linux系统调用
系统调用是应用程序与操作系统内核之间的接口,它决定了程序如何与内核打交道的。无论程序是直接进行系统调用,还是通过运行库,最终还是会到达系统调用这个层面上。x86系统下,Linux系统使用0x80号中断作为系统调用的入口。EAX寄存器用于表示系统调用的接口号,比如EAX=1表示退出进程,EAX=2表示创建进程,EAX=3表示读取文件,EAX=4表示写文件等。每一个系统调用都对应于内核代码中的一个函数
2013-03-26 08:49:48
1160
原创 Linux内存布局
Linux下一个进程里典型的内存布局:一般来讲,程序使用的内存空间里有如下默认的区域:栈:用于维护程序上下文堆:用来容纳应用程序动态分配的内存区域可执行文件映像:可执行文件在内存里的映像保留区:内存中受到保护而禁止访问的内存区域的总称 栈,在程序运行中具有举足轻重的地位。它保存了一个函数调用所需要的维护信息,这常常被称为堆栈帧或活动区域。堆栈帧一般包括如下
2013-03-26 08:47:57
1035
原创 Windows下动态链接
Dll即动态链接库,相当于Linux下的共享对象。Windows下的类ELF文件称为PE文件,它属于PE/COFF格式。 PE里面有两个常用的概念,基地址和相对地址(RVA);当一个PE文件被装载时,其进程地址空间中的起始地址就是基地址,任何一个PE文件都有一个优先加载的基地址,PE文件头中的Image Base。 通过简单示例,了解DLL的创建和使用,其中最基
2013-03-26 08:45:28
903
原创 Linux下动态链接
Linux系统中,ELF动态链接文件被称为动态共享对象(DSO),简称共享对象,它们一般都是以“.so”为扩展名的一些文件;Windows中,动态链接文件被称为动态链接库(.dll)。下面是一个简单的例子:[cpp] view plaincopy#include "lib.h" int main() { foobar(1
2013-03-25 17:34:31
1273
原创 可执行文件的装载
这里,我们从OS的角度来阐述一个可执行文件如何被装载,并且同时在进程中执行。一个可执行文件从装载到执行,最开始只需要做三件事情:创建一个独立的虚拟地址空间读取可执行文件头,并且建立虚拟空间与可执行文件的映射关系将CPU指令寄存器设置成可执行文件的入口地址,启动运行Linux下,创建虚拟地址空间只是分配一个页目录就可以了,甚至不设置页映射关系。当程序发生页错误时,OS将从物理内存中分
2013-03-25 17:04:54
1352
原创 静态链接
当我们有两个目标文件时,如何将它们链接起来形成一个可执行文件?使用以下两个源代码文件作为例子展开分析: // 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
964
原创 目标文件
现在PC平台流行的可执行文件格式主要是Windows下的PE(Portable Executable)和Linux下的ELF(Executable Linkable Format),它们都是COFF(Common file format)格式的变种。目标文件就是源代码编译后但未链接的那些中间文件,它跟可执行文件的内容与结构很相似,一般跟可执行文件格式采用同一种格式存储 动态链接库、静态
2013-03-25 16:47:40
1155
LDD3-examples for kernel_4_15
2018-11-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人