![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux C
无才顽石
life for coding,non coding for life
展开
-
Segment fault
Segment fault 之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的。来自:http://oss.lzu.edu.cn/blog/article.php?uid_7/tid_700.html#comment背景 最近一段时间在linux下用C做一些学习和开发,但是由于经验不足,问题多多。而段错误就是让我非常头痛转载 2012-07-25 08:51:42 · 1849 阅读 · 0 评论 -
Linux 内核资源
http://www.wowotech.net/sort/device_model原创 2015-04-01 10:39:52 · 657 阅读 · 0 评论 -
Running Modetest to Test Your DRM Display Driver Once you finish the DRM(Direct Rendering Manager)
Running Modetest to Test Your DRM Display DriverOnce you finish the DRM(Direct Rendering Manager) driver, you will need to run the modetest to test your driver. modetest is a user-land test program of转载 2015-08-06 14:49:30 · 2736 阅读 · 1 评论 -
ALSA FramesPeriods
alsa 中广泛使用两个基本概念 frame 和 period,这两个概念在 alsa 官方解释是: http://www.alsa-project.org/main/index.php/FramesPeriodsframe: 帧,是一个播放样本的计量单位,由通道数和比特数确定。例如:立体声 48kHz 16bit 的 PCM,一帧的大小是 4 byte5.1通道 4翻译 2014-07-08 14:55:37 · 3070 阅读 · 2 评论 -
从零使用qemu模拟器搭建arm运行环境
原文链接: http://blog.csdn.net/linyt/article/details/42504975为什么会有这篇文章早在2011年的时候,跟当时同事一起讨论,做Linux系统开发正处于整个Linux开发中间层,没有上层的C/C++业务和数据库的开发经验,也没有底层的内核和驱动开发经验,到底路该如何走……基于对Linux系统开发的理解和内核的兴趣,认为选择Linu转载 2015-09-10 09:47:42 · 1094 阅读 · 1 评论 -
使用 tar 命令打包发布文件
使用 tar 命令打包发布文件发布你的程序有时候发布的文件是一些 lib 或者 firmware 等非源码文件,甚至一次需要更新很多个文件,这个时候基本会利用安装脚本辅助用户安装这些发布和更新,一般的做法是将所有文件整理打包,然后告诉用户如何执行某个命令,就可以顺利安装所需的更新。这样我们就需要准备压缩包,安装脚本和安装文档。其实我们可以将整个发布集成在一个脚本里面原创 2015-09-25 11:01:45 · 2196 阅读 · 0 评论 -
drm 驱动是如何创建 fb device 的
drm 驱动是如何创建 fb device 的drm 驱动是如何创建 fb device 的什么是 drm如何使用 drm 接口libdrmfb device本文讨论的问题是 drm 驱动是如何虚拟 drm crts 为 fb device设备驱动创建 fbdev完成 fb 设备的创建流程图什么是 drm?drm 是一个 Linux 内核的显示系统驱动框架,区别于另外一个 DRM数字原创 2015-09-29 11:41:14 · 16958 阅读 · 0 评论 -
Linus 又发怒了,针对丑陋的代码
Linus 又发怒了,针对丑陋的代码 Christ people. This is just sh*t.看来大神这次怒的不轻。我们来看看令大神愤怒的代码是什么样的,事情的起因是一位 net 开发者,提交一系列关于内核 Networking 的补丁: This may look a bit scary this late in the release cycle, but as is typ原创 2015-11-04 09:57:57 · 3952 阅读 · 0 评论 -
查看 Ubuntu 的发行版信息
查看 Ubuntu 的发行版信息Ubuntu 的发行版信息放在 /etc/lsb-release例如我的版本信息:DISTRIB_ID=UbuntuDISTRIB_RELEASE=12.04DISTRIB_CODENAME=preciseDISTRIB_DESCRIPTION="Ubuntu 12.04.1 LTS"是 12.04 precise 的服务器发行版原创 2015-10-20 14:02:06 · 780 阅读 · 0 评论 -
Linux虚拟内存管理 - Page Table的作用
Linux虚拟内存管理 - Page Table的作用网址: http://www.eygle.com/digest/2012/05/linux_page_table.html虚拟内存的作用:1. 扩展实际有限的物理内存,当然这种扩展是虚拟的,比如物理内存512M,对于一个需要1G空间的进程来说,照样可以运行。这增加了操作系统是应用范围。 2转载 2015-10-21 15:37:04 · 11261 阅读 · 1 评论 -
arm mmu page
http://blog.csdn.net/xiaojsj111/article/details/11065717ARM MMU页表框架先上一张arm mmu的页表结构的通用框图(以下的论述都由该图来逐渐展开):以上是arm的页表框图的典型结构:即是二级页表结构:其中第一级页表(L1)是由虚拟地址的高12bit(bits[31:20])组成,所转载 2015-10-21 15:14:56 · 876 阅读 · 0 评论 -
程序运行时的内存空间分布
http://blog.csdn.net/ljianhui/article/details/21666327我们在写程序时,既有程序的逻辑代码,也有在程序中定义的变量等数据,那么当我们的程序进行时,我们的代码和数据究竟是存放在哪里的呢?下面就来总结一下。一、程序运行时的内存空间情况其实在程序运行时,由于内存的管理方式是以页为单位的,而且程序使用的地址都是虚拟转载 2016-02-24 16:11:40 · 881 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法小结
http://blog.163.com/longsu2010@yeah/blog/static/17361234820122761525799/最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对转载 2016-02-24 16:13:28 · 1805 阅读 · 0 评论 -
csky 开发环境搭建
csky 介绍https://c-sky.github.io 一块国产开发板,使用国产处理器,必须支持一下购买了开发板后,板子上默认集成 4MB SPI Flash 用于存放 bootloader 和播放器程序,所以开机后就是执行 BootLoader 和播放器程序,启动界面如下 串口打印 :XNts_port=2 not support, please input 1.Parti...原创 2018-07-18 10:07:30 · 11187 阅读 · 0 评论 -
Linus Torvalds 如何修正影响《猎魔人2》的内核 bug
Bug:CD Projekt去年为其角色扮演游戏《猎魔人2:国王刺客》加入了Linux支持,但Linux版并不是原生版本,而是使用一个特殊的包装器让Windows版本能在Linux机器上运行,方法类似Wine。游戏在Linux系统上的性能表现不佳,而以为买到了Linux原生版本的Linux玩家则感到了欺骗。但不是所有的问题都是游戏本身导致的。玩家在Steam论坛和GitHub《猎魔人2》非官方原创 2015-01-27 09:58:40 · 3192 阅读 · 0 评论 -
linux kernel的cmdline参数解析原理分析
http://blog.csdn.net/skyflying2012/article/details/41142801利用工作之便,今天研究了kernel下cmdline参数解析过程,记录在此,与大家共享,转载请注明出处,谢谢。Kernel 版本号:3.4.55Kernel启动时会解析cmdline,然后根据这些参数如console root来进行配置运行。转载 2014-12-02 14:53:01 · 1827 阅读 · 0 评论 -
Illegal instruction
1 现象Kernel panic - not syncing: Attempted to kill init![] (unwind_backtrace+0x0/0xe4) from [] (panic+0x68/0x190)[] (panic+0x68/0x190) from [] (do_exit+0xb0/0x724)[] (do_exit+0xb0/0x724) f转载 2012-07-27 14:02:46 · 17079 阅读 · 1 评论 -
浅析 Linux 下的 arm 交叉编译工具
什么是交叉编译工具http://elinux.org/Toolchains原创 2014-05-15 19:44:14 · 1821 阅读 · 0 评论 -
Android 4.4 Kitkat 使能 USB adb 功能
背景在 Linux-3.8 以后,Android 的内核分支,便去掉了 f_adb,改使用 USB function FS,在用户空间实现 USB adb 功能。这篇文章根据原作者的 Google+ 文章,在 Atmel sama5 开发板上做了测试,将步骤记录如下,供需要使用的读者参考,你也可以查看作者原文:https://plus.google.com/111524780435806926原创 2014-05-15 17:38:16 · 11811 阅读 · 2 评论 -
linux 中 C 语言的使用 -- 结构体多态
在 Linux 内核代码,特别是驱动代码中经常见到的用法是使用一个标准结构,后面的代码基于这个结构来实现,类似面向对象的多态特性。在 C 语言里面借助结构体和函数指针实现的这个功能,这里我们写了个例子,提取了关键代码: #include struct s_new{ char name[10]; char* (* my_method)(char *name);原创 2014-05-18 18:41:44 · 3054 阅读 · 0 评论 -
基于linux 3.10的yaffs2移植
最近想起来还有一块mini2440的开发板很久没有使用了,所以想移植一个基于linux3.10的linux系统,但是在移植yaffs2文件系统的时候出现了一些问题,我将其记录下来给其他同学解决同样的问题提供帮助。1. 首先通过git下载yaffs2代码。然后进入yaffs2文件夹中执行patch-ker.sh,给linux源代码打上patch。$ git clone git://www转载 2014-06-05 09:33:56 · 4396 阅读 · 3 评论 -
定位Oops错误代码行
原文: [17184178.672000] Bad mode in data abort handler detected[17184178.672000] Internal error: Oops - bad mode: 0 [#1] PREEMPT[17184178.672000] CPU: 0 Not tainted (2.6.26.5 #1255)[转载 2014-06-10 11:00:07 · 5933 阅读 · 1 评论 -
Linux 内核的编译系统
Linux 的编译使用 GNU make 工具来检查整个系统的文件和调用 gcc 工具以及脚本完成编译源代码生成 image 等操作。要了解整个编译系统,我们首先要了解 Linux 内核的 Makefile 文件。 Linux 的 编译系统包括 5 个部分Makefile 顶层的 Makefile 文件.config 内核配置文件arch/$(ARCH原创 2014-06-12 17:05:31 · 3908 阅读 · 0 评论 -
ubi 的相关概念和解释
设备和卷 设备是抽象在 MTD 上的概念,MTD 分区上首先需要格式化为 UBI 设备 uboot CMD: ubi part 卷是 UBI 设备上的概念, ubi 设备上可以创建多个卷 uboot CMD: ubi create 对于 mkfs.ubifs 做成的镜像是 ubi 格式的。 需要使用 ubi write 或者 nand write.ubifs 烧写,具体没有测试 u原创 2014-05-29 15:37:45 · 7834 阅读 · 0 评论 -
asoc 调试笔记之 route
root@raspberrypi:/sys/kernel/debug/regmap/spi0.1# mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote con原创 2014-05-29 15:48:57 · 2328 阅读 · 0 评论 -
asoc 调试笔记之 wm5102
Wm5102 是一颗功能强大的音频编解码芯片, 三星 S4 手机就使用了这个芯片。 手册解读: 数字接口: AIFs 支持 PCM,TDM,I2S AIF1 支持 8 通道, AIF2 和 AIF3 支持 2 通道。双向通信可达 192KHz 2 PWM 输出 5原创 2014-05-29 15:54:41 · 3280 阅读 · 0 评论 -
Linux USB 基础
16.2.2 USB设备 一个USB设备由三个功能模块组成:USB总线接口、USB逻辑设备和功能单元。这里的USB总线接口指的是USB设备中的串行接口引擎(SIE);USB逻辑设备被USB系统软件看作是一个端点的集合;功能单元被客户软件看作是一个接口的集合。SIE、端点和接口都是USB设备的组成单元。为了更好地描述USB设备的特征,USB提出了设备架构的概念。从这个角度来看,可以认为原创 2014-05-29 15:58:09 · 1519 阅读 · 0 评论 -
shell 执行数学运算
bash本身不具备浮点运算功能,最近在看《Advanced Bash-Scripting Guide》,里面介绍了一种使用bc来实现bash浮点运算的方法。bc是一个高精度的计算器,gentoo用户可以使用emerge bc来安装。在脚本中使用bc的基本格式如下: variable=$(echo "OPTIONS; OPERATIONS" | bc)下面是几个例子: #!原创 2014-05-29 15:50:48 · 1089 阅读 · 0 评论 -
Linux Shell 通配符、元字符、转义符使用实例介绍
说到shell通配符(wildcard),大家在使用时候会经常用到。下面是一个实例:1 1234[chengmo@localhost ~/shell]$lsa.txt b.txt c.old #2转载 2014-10-21 15:09:22 · 927 阅读 · 0 评论 -
uboot向kernel的传参机制——bootm与tags
http://blog.csdn.net/skyflying2012/article/details/35787971最近阅读代码学习了uboot boot kernel的过程以及uboot如何传参给kernel,记录下来,与大家共享:U-boot版本:2014.4Kernel版本:3.4.55一 uboot 如何启动 kernel1 do_bootmu转载 2014-12-02 15:04:20 · 2062 阅读 · 0 评论 -
IOTutility 一个轻量级的 IOT 基础操作库
IOTutility 一个轻量级的 IOT 基础操作库IOTutility 一个轻量级的 IOT 基础操作库1. 为什么要写一个 IOT 编程库?2. IOTutility 具有什么功能?3. IOTutility 有什么特点IOTutility 实现了哪些功能MQTT protocol implement MQTT 实现1. 创建一个 MQTT_Session...原创 2018-09-17 16:49:45 · 390 阅读 · 0 评论