嵌入式Linux
yuesichiu
目前负责相机功能开发,工作内容主要包括拍照、录像、相册浏览、图像融合等工作
展开
-
Linux C代码实现substr函数(类似于PHP中的substr函数)
目录一、PHP substr()的用法详解定义和用法语法技术细节二、Linux C代码实现substr函数三、测试验证一、PHP substr()的用法详解定义和用法substr() 函数返回字符串的一部分。注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。语法substr(string,st...原创 2020-04-09 21:29:00 · 883 阅读 · 0 评论 -
UNIX环境高级编程源代码编译报错barrier.c:(.text+0x80): undefined reference to `heapsort'
开发环境:CentOS-7.7-1908,gcc version 4.8.5 20150623UNIX高级环境编程的源代码下载地址:http://apuebook.com/code3e.html源代码压缩包:src.3e.tar.gz在CentOS-7.7下解压源代码文件后进行编译,报错信息为:gcc -ansi -I../include -Wall -DLINUX -D_GNU_...原创 2020-02-22 11:12:45 · 1101 阅读 · 0 评论 -
Debian 9禁用驱动模块自动加载
参考资料:https://wiki.debian.org/KernelModuleBlacklisting版权声明:本文为博主(宽简厚重,Yuesichiu)原创文章,未经博主允许不得转载。https://blog.csdn.net/yuesichiu/article/details/1040311201、创建一个/etc/modprobe.d/blacklist.conf格式为b...原创 2020-01-18 16:08:18 · 1092 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法小结
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,转载 2016-04-18 14:37:08 · 752 阅读 · 0 评论 -
Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(2)
移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。4,开发板:mini2440,2M nor flash,128M nand flash。5,转载 2014-08-31 09:03:23 · 1712 阅读 · 0 评论 -
Linux系统之initramfs工作流程
initrd的参考文档可见: 1) Linux initial RAM disk (initrd) overview, http://www.ibm.com/developerworks/linux/library/l-initrd/index.html 2) NTTdocomo-openstack / baremetal-initrd-builder, https:原创 2014-08-29 15:19:19 · 3482 阅读 · 0 评论 -
GCC options总结
1.gcc编译器(1)程序的编译过程在使用gcc编译程序时,编译过程可以分为4个阶段:a.预处理(pre-processing)b.编译(compiling)c.汇编(assembing)d.链接(linking)(2)在功能上,预处理,编译,汇编是三个不同的阶段a.在预处理阶段,输入的是C语言的源文件,通常为*.c或*.C.它们一般带有*.h之类的头文件。这个阶段转载 2014-07-22 13:53:39 · 763 阅读 · 0 评论 -
MACHINE_START分析
在友善mini2440提供的linux2.6.32.2内核中,有如下定义:MACHINE_START(MINI2440, "FriendlyARM Mini2440 development board").phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,.boot_pa转载 2013-08-12 13:32:54 · 1113 阅读 · 0 评论 -
主机host与网络network传输字节
在Linux下,主机上使用的字节序一般都是小端,而网络上传输的字节序统一为大端,所以需要一些函数来进行转换及处理。htons() ----主机到网络shorthtonl() ----主机到网络longntohs() ----网络到主机shortntohl() -----网络到主机long具体宏参考实现如下:#ifndef htons#define htons(n)原创 2020-09-06 16:08:33 · 301 阅读 · 0 评论 -
[经典分享]对位的各种操作
#define BIT(x) (1#define BIT0 (0x01)#define BIT1 (0x02)#define BIT2 (0x04)#define BIT3 (0x08)#define BIT4 (0x10)#define BIT5原创 2013-06-09 19:51:33 · 2560 阅读 · 0 评论 -
通用i2c驱动
了解I2C的同志都知道,常规I2C驱动中的最重点就是这4个结构体:i2c_driver、i2c_client、i2c_adapter 和i2c_algorithm,而且他们之间的关系错综复杂,我看了好长一段时间,也没看出多少头绪来,而且代码的可移植性很差劲,换个平台,要该的地方一大堆,改了之后还不一定对呢,所以,下面介绍的通用I2C驱动就很必要了。 大家都知道, I2C总线仅仅使用SCL转载 2013-05-12 10:38:49 · 1343 阅读 · 1 评论 -
Linux 2.6.31内核优化指南
介绍本文档是一篇关于Linux Kernel 2.6.31的最简优化指南。作者旨在编译一份性能最佳且适合普通Application/Server开发用的内核。(非生产环境)本文提及的内核调优,主要是通过选择最佳编译选项,删除无用驱动,减少内核尺寸,关闭部分安全特性等方式来进行的。优化后的效果,主要体现在OS启动时间,启动后的内存占用以及应用程序运行性能。由于作者水平有限,如果描述错转载 2013-04-11 14:45:38 · 1169 阅读 · 0 评论 -
嵌入式Linux驱动程序之编程常见错误
嵌入式Linux驱动程序之编程常见错误1、warning: function declaration isn't a prototype 这种错误也是很常见的,主要是对一些函数固定格式的错误使用。比如int function()改称int function(void) static int xxxx_init(void)记住不要缺少st原创 2012-12-15 16:32:00 · 1809 阅读 · 0 评论 -
嵌入式Linux中移植vim编辑器
近期在做嵌入式Linux的开发,根文件系统是基于Busybox裁剪的。由于Busybox中只有vi编辑器而没有vim编辑器,而且vi编辑器用起来挺别扭的,于是就想到了移植vim编辑器。步骤: 1、下载最新的vim源代码vim-7.4.tar.gz下载网址:http://www.linuxfromscratch.org/blfs/view/7.4/postlfs/vim.htm原创 2015-09-11 10:49:27 · 2099 阅读 · 0 评论 -
Putty设置默认的字体大小,滚动行数
一、设置全局默认的Putty字体大小二、查看历史记录,滚动行加大三、最后保存为Default Settings原创 2019-04-25 10:40:58 · 3646 阅读 · 0 评论 -
I2C Bus Specification(QuickStart)
I2C Bus SpecificationA typical embedded system consists of one or more microcontrollers and peripheral devices like memories, converters, I/O expanders, LCD drivers, sensors, matrix switches, etc. The...转载 2018-04-10 15:25:43 · 982 阅读 · 0 评论 -
Linux eMMC子系统之主机控制器驱动(host conntroller driver)
1. 前言本文是Linux MMC framework的第二篇,将从驱动工程师的角度,介绍MMC host controller driver有关的知识,学习并掌握如何在MMC framework的框架下,编写MMC控制器的驱动程序。同时,通过本篇文章,我们会进一步的理解MMC、SD、SDIO等有关的基础知识。2. MMC host驱动介绍MMC的host driver,是用于驱动MM转载 2017-07-02 22:13:48 · 3751 阅读 · 1 评论 -
基于Linux-3.10.0-229内核的Baytrail eMMC驱动分析之一概述
一、硬件环境Intel Baytrail eMMC-4.5控制器CentOS-7.1-1503-X86_64.isolinux-3.10.0-229.el7.x86_64eMMC存储芯片——KLMxGxGEND-B031(支持eMMC-5.0协议标准)二、软件环境1、原创 2017-07-01 22:10:22 · 1675 阅读 · 0 评论 -
EMMC命令详解
基本命令CMD0cmd0带参数0xF0F0F0F0,GO_PRE_IDLE_STATE是软件reset命令,使得设备进入pre_idle状态cmd0带参数0xFFFFFFFA,该命令使得device进入boot operation mode,device将主动发送数据到总线上,数据区域和大小由ECSD寄存器控制。cmd0带参数0x00000000, GO_IDLE_STAT转载 2017-06-30 21:28:23 · 17291 阅读 · 1 评论 -
CentOS 7之Systemd详解之单元配置systemd.unit
Systemd详解,CentOS 7系统管理 Systemd翻译 2016-05-06 14:01:42 · 5726 阅读 · 0 评论 -
使用mplayer播放音乐时警告“mplayer can't open audio device /dev/dsp”
使用mplayer播放音乐时警告“[AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file or directory”这个问题主要是缺少了OSS PCM (digital audio) API模块。在内核源代码里面执行“make menuconfig”,进入Deivce Drivers——> Sound car原创 2016-05-05 11:31:37 · 6257 阅读 · 1 评论 -
开机NTP服务器报错ntpd_intres++ntp_intres.request:+permission+denied
在嵌入式系统中,开机NTP服务器报错:ntpd_intres++ntp_intres.request:+permission+denied原因: DNS 服务器还没有生效(not available),因此报错。When I googled around for "ntp_intres.request: permission denied" I found a few ref原创 2015-10-21 11:54:21 · 2882 阅读 · 0 评论 -
linux内存管理初始化
内存管理子系统是linux内核最核心最重要的一部分,内核的其他部分都需要在内存管理子系统的基础上运行。而对其初始化是了解整个内存管理子系统的基础。对相关数据结构的初始化是从全局启动例程start_kernel开始的。本文详细描述了从bootloader跳转到linux内核内存管理子系统初始化期间所做的操作,从而来加深对内存管理子系统知识的理解和掌握。内核的入口是stext,这是在arch/ar原创 2013-04-10 10:01:20 · 5104 阅读 · 0 评论 -
Mips 1004k处理器在CentOS-5.2(RedHat Enterprise5.1)搭建交叉工具链Cross Compile toolchains
最近在弄Mips 1004k处理器搭建交叉工具链,希现分享下:宿主机:PC(32位)虚拟机:VirtualBox Linux系统:CentOS-5.2目标机:Mips 1004k处理器为的开发板linux版本号及包:linux-mti-2.6.35.9-2.tar.gz交叉工具链:Mips-4.4-303-mips-linux-gnu-i686-pc-linux-gnu.t原创 2013-02-28 21:18:54 · 1682 阅读 · 0 评论 -
Linux系统常用的cpio命令及scp命令
1、cpio命令cpio是用来建立,还原备份档的工具程序,它可以加入,解开 cpio或tra 备份档内的文件。cpio一般能够解压后缀名为xz文件。参 数: -0 或--null 接受新增列控制字符,通常配合 find 指令的"-print0"参数使用。 -a 或--reset-access-time 重新设置文件的存取时间。 -A 或--append原创 2013-01-11 19:37:35 · 1211 阅读 · 0 评论 -
Linux-2.6.32.2内核在mini2440上的移植(三)---DM9000网卡驱动移植
移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。4,开发板:mini2440,2M nor flash,128M nand flash。5,转载 2012-11-30 12:20:42 · 1034 阅读 · 0 评论 -
Linux-2.6.32.2内核在mini2440上的移植(二)---yaffs2文件系统移植
移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。4,开发板:mini2440,2M nor flash,128M nand flash。5,转载 2012-11-30 12:20:01 · 864 阅读 · 0 评论 -
Linux-2.6.32.2内核在mini2440上的移植(一)---构建自主开发环境
移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。4,开发板:mini2440,2M nor flash,128M nand flash。5,转载 2012-11-30 12:19:11 · 1259 阅读 · 0 评论 -
linux 2.6.32.2 各驱动代码位置
linux 2.6.32.2 各驱动代码位置 说明:解压内核源代码(linux-2.6.32.2 开头的tgz 压缩文件)可以找到如下驱动,mini2440提供基于linux-2.6.32.2 内核100%完全可以使用的驱动源代码,绝无库文件,敬请放心使用。(1)DM9000 网卡驱动Linux-2.6.32.2/drivers/net/dm9000.c(2)串口(包括三个转载 2012-11-16 08:49:08 · 1629 阅读 · 0 评论 -
Fedora14平台上U-boot 之TFTP服务器配置
一.PC端配置1、检查是否已经安装了TFTP服务器。]# netstat -a | grep tftp如果未安装,则没有任何显示。需手动安装。在Fedora14联网的情况下,在命令行输入:yum install xinetd tftp tftp-server2、修改tftp服务器配置]# vi /etc/xinetd.d/tftp原创 2012-11-09 17:40:00 · 1415 阅读 · 0 评论 -
Linux下静态链接库和动态链接库的使用
库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 例如:libtest.so libtest.a。为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,但由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。如: ln -s libtest.so.1.0 hello.so.1 ln -s libtest.so.1 hello.转载 2012-11-07 18:32:29 · 582 阅读 · 0 评论 -
linux系统调用
linux系统调用Linux内核中,设置了一组用于实现各种系统功能的函数------系统调用Linux下对文件操作有两种方式:系统调用(system call)和普通函数调用。Linux系统调用VS普通函数调用系统调用由操作系统内核实现,运行于内核态。普通函数调用由函数库或用户自己提供。库函数fread()对系统调用做了一定的封装。 工作原理概述:void main原创 2012-11-07 16:21:38 · 820 阅读 · 0 评论 -
Proc文件系统
一、Proc文件系统Proc文件系统是一种在用户态检查内核态的机制,文件的内容是动态创建的,并不在磁盘上,而是在内存中,掉电丢失。cat /proc/meminfo/ 可查看当前内存使用情况内核描述:struct proc_dir_entry { unsigned int low_ino; unsigned short namelen; const char *nam原创 2012-11-08 09:23:26 · 1024 阅读 · 0 评论 -
Linux进程调度
Linux进程调度1、程序VS进程程序是存放在磁盘上的一序列代码和数据的可执行映像,是一个静止的实体。进程是一个执行中的程序,是动态的实体。2、Linux进程的四大要素有一段供进程执行的程序,该程序可以被多个进程执行。:有进程专用的内核空间堆栈。:进程控制快(task_struct:有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。:独立的用户空间原创 2012-11-06 22:13:13 · 931 阅读 · 0 评论 -
Linux-2.6.32.2内核在mini2440上的移植(四)---根文件系统制作(1)
移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gn?i-gcc v4.5.1。4,开发板:mini2440,2M nor flash,128M nand flash。5,u-b转载 2012-11-30 12:21:30 · 1818 阅读 · 0 评论 -
Linux-2.6.32.2在mini2440移植时常见问题
Linux-2.6.32.2在mini2440移植时常见问题首先感谢网友的贡献。本机环境参数baudrate=115200ethaddr=08:08:11:18:12:27 //目标板网卡地址(软地址)ipaddr=192.168.1.226 //目标板IPgatewayip=192.168.1.1netmask=255.255.255.0s原创 2012-11-30 13:11:11 · 1986 阅读 · 0 评论 -
Linux系统的etc目录
1、/etc/group文件/etc/group 文件文件的格式和 /etc/passwd 文件格式类似,它也是一个纯文本文件,定义了每个组中的用户。每行的格式是: group_name:passwd:GID:user_list。groupname:组名Passwd:组口令。此域中的命令是加密的,如果此域为空,表明不需要口令。Gid:指定GIDUser_list:该组的所有用户原创 2012-12-01 11:48:16 · 1185 阅读 · 0 评论 -
Linux-2.6.32.2内核在mini2440上的移植(九)---触摸屏驱动移植
Linux-2.6.32.2内核在mini2440上的移植(九)---触摸屏驱动移植移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。4,转载 2012-12-20 11:54:30 · 922 阅读 · 0 评论 -
Linux-2.6.32.2内核在mini2440上的移植(八)---添加ADC驱动
Linux-2.6.32.2内核在mini2440上的移植(八)---添加ADC驱动移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。4,开发转载 2012-12-19 09:07:11 · 1589 阅读 · 0 评论 -
Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植
Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植移植环境(红色粗字体字为修改后内容,蓝色粗体字为特别注意内容)1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。4,开发转载 2012-12-16 12:46:18 · 1875 阅读 · 0 评论