![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
arm-linux 学习
文章平均质量分 84
拿破仑的海阔天空
交流,笔记,提高
展开
-
一文打尽OpenWrt系统内核设置(/etc/sysctl.conf)、非UCI系统配置(/etc/rc.local、/etc/profile等)
一、前言系统内核设置:OpenWrt也是一个 Linux 操作系统,因此它和桌面操作系统 Ubuntu及Fedora 一样, 采用sysctl作为系统的内核配置工具。sysctl.conf作为其内核配置文件在启动时进行加载。非UCI系统配置:OpenWrt还有一些配置并不是通过UCI配置来实现的,这部分是大多数 Linux 系统都有的配置,并且用户很少修改,因此并不提供接口给用户修改。Title 配置系统内核设置 /etc/sysctl.conf、sysctl非UCI系统配置 /...转载 2022-04-06 17:37:49 · 3343 阅读 · 0 评论 -
make headers_install 用法
Exporting kernel headers for use by userspaceThe “make headers_install” command exports the kernel’s header files in a form suitable for use by userspace programs.The linux kernel’s exported header files describe the API for user space programs attempt翻译 2022-03-19 11:06:52 · 2115 阅读 · 0 评论 -
make modules_install 解决装模块的时候出现错误:modprobe: chdir(3.0.35-g6774ed9-dirty): No such file or directory.
Linux modules install安装模块的时候出现错误:modprobe: chdir(3.0.35-g6774ed9-dirty): No such file or directory.内核模块没有安装正确。本文记录解决方法。参考链接http://linfengdu.blog.163.com/blog/static/1177107320132710370696/问题描述安装模块的时候出现错误。root@freescale $ modprobe g_mass_stor转载 2022-03-19 11:03:45 · 4017 阅读 · 0 评论 -
Linux驱动开发中与设备树相关的6种debug方法
整理出了6种驱动开发时与设备注册、设备树相关的调试方法,彼此间没有优先级之分,每种方法不一定是最优解,但可以作为一种debug查找问题的手段,快速定位问题原因。例如在芯片验证时,不同时钟频率下系统启动情况摸底时,U-Boot fdt命令可以方便快捷的帮助我们完成这个实验。#1. dtdiff工具这个文件需要在宿主机安装,在对比二进制的dtb文件时比较方便。文本格式的dts文件对比并不需要这个工具。对比以下两个dtb文件的结果如下:#2. kernel device-tree base转载 2022-02-12 17:16:18 · 817 阅读 · 0 评论 -
GCC创建和使用静态链接库(.a文件)
Linux 下的静态链接库是以.a结尾的二进制文件,它作为程序的一个模块,在链接期间被组合到程序中。和静态链接库相对的是动态链接库(.so文件),它在程序运行阶段被加载进内存。制作链接库的目的是希望别人使用我们已经实现的功能,但又不希望别人看到我们的源代码,这对商业机构是非常友好的。Linux 下静态链接库文件的命名规则为:libxxx.axxx 表示库的名字。例如,libc.a、libm.a、libieee.a、libgcc.a 都是 Linux 系统自带的静态库。GCC生成静态链接库.转载 2022-01-11 20:19:10 · 3154 阅读 · 1 评论 -
GCC编译过程与动态链接库和静态链接库,很详细
1. 库的介绍库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 windows上对应的是.lib .dll linux上对应的是.a .so在这里先介绍下Linux下的gcc编译的几个选项g++ -c hellospeak.cpp会将hellospeak.cpp转载 2022-01-11 20:17:41 · 4919 阅读 · 0 评论 -
V4L2应用层编程
V4L2编程 2012-06-20 14:40:26 分类: LINUX#include #include #include #include #include #include #include #include #include #include typedef st转载 2014-07-24 00:27:00 · 1117 阅读 · 0 评论 -
/dev/null 的用途
/dev/null ,从名称上可以很显然看出是一个空文件(写入到/dev/null时全部丢失,读取/dev/null时自己返回EOF),那么你会很疑惑,他到底有什么用途呢,请看下文听我讲解,可能你在很多脚本里看过 /dev/null,具体总结下几种常见用途.一、禁止标准输出.eg: cat $filename >/dev/null转载 2014-07-01 23:09:02 · 580 阅读 · 0 评论 -
shell之“>/dev/null 2>&1” 详解
shell之“>/dev/null 2>&1”详解 以下是本人的理解,大家看看对不对,欢迎讨论~shell中可能经常能看到:>/dev/null 2>&1命令的结果可以通过 %> 的形式来定义输出,其中 %>代表文件描述符我们将这个命令组合:“>/dev/null2>&1” 拆为四部分来分析下:1:首先 0>表示stdin标准输入; 1> 表示stdout标准输转载 2014-07-01 23:24:05 · 465 阅读 · 0 评论 -
将串口ttySAC*改名为串口ttyUSB*
将串口ttySAC*改名为串口ttyUSB*串口驱动注册的设备名是s3c2410_serial0, s3c2410_serial1 和s3c2410_serial2,而mdev则会在/dev目录下对应生成 ttySAC0, ttySAC1 和 ttySAC2 以符合应用程序对于串口设备名称的习惯 嵌入设备通常使用mdev来创建设备名称vi转载 2014-07-02 00:25:56 · 2634 阅读 · 0 评论 -
Source insight “An invalid Source Insight serial number was detected”问题的修改
阅读内核代码习惯和喜欢使用source insight。如果能在source insight上修改内核代码,同时又不需要把修改的内核代码再拷贝到虚拟ubuntu上去那就方便了。于是想通过用samba与xp共享的方式来实现。即xp、samba、虚拟ubuntu9.10等工具。事实上是可以的,用source insight把在samba上共享的内核源文件建立了工程,速度上不是特别慢,可以接受。转载 2014-05-13 23:03:51 · 1702 阅读 · 0 评论 -
Makefile中的wildcard用法及一个万能makefile
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。需要注意的是:这种情况下规则中通配符的展原创 2014-05-12 18:16:42 · 8623 阅读 · 0 评论 -
DM6446之GPIO中断
[html] view plaincopy/* drivers/char/davinci_dm644x_button.c*/ /******************************************************************************* * HEADER FILES */转载 2014-04-26 00:50:05 · 856 阅读 · 0 评论 -
用busybox制作根文件系统 telnetd功能添加
用busybox制作根文件系统1 获取源码解压从busybox的官方主页http://www.busybox.net ,下载busybox的源码,目前最新的版本为busybox-1.13.3.tar.bz2#tar –jvxf busybox-1.13.3.tar.bz2进入解压后的busybox源码目录#cd busybox-1.13.32 配转载 2014-04-11 00:06:49 · 1218 阅读 · 0 评论 -
基于platform驱动模型-mini2440按键驱动(完美支持防抖动)
一、开发环境 主 机:ubuntu10.04开发板:Mini2440--256MB Nand, Kernel:2.6.32.2编译器:arm-linux-gcc-4.3.2二、实现步骤 1. 硬件原理图分析。由原理图可知每个按键所用到的外部中断分别是EINT8、EINT11、EINT13、EINT14、EINT15、EINT19,所对应的IO口分别是GPG转载 2014-04-24 23:31:45 · 748 阅读 · 0 评论 -
自定义u-boot启动logo的方法
自定义u-boot启动logo的方法~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 如果在uboot中实现了LCD等显示设备的驱动,uboot在启动的时候会在屏幕的左上角显示一个logo,如下图: 这个logo默认情况(只定义了CONFIG_VIDEO_LOGO)是如上图所示的企鹅(如果还定义了CO转载 2014-05-31 21:43:20 · 658 阅读 · 0 评论 -
uboot 源码官方下载地址
uboot 源码官方下载地址 最近打算开始学习uboot,得好好加油。 U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来 所有版本的u-boot源代码压缩包都可以在ftp://ftp.denx.de/pub/u-boot/下载。关于u-b转载 2014-05-31 21:47:00 · 738 阅读 · 0 评论 -
Ubuntu 12.04编译kernel,make menuconfig错误
执行make menuconfig的时候报如下错误eric@eric-OptiPlex-380:~/work/linux_3.9.5/linux-3.9.5$ make menuconfig HOSTLD scripts/kconfig/mconfscripts/kconfig/mconf.o: In function `show_help':mconf.c:(.text+原创 2014-06-21 21:51:39 · 901 阅读 · 0 评论 -
Linux 驱动 SPI EEPROM(M95080W)
M95080W 是 意法半导体的一款 SPI 接口的 EEPROM,容量大小为 8K bit。如果还没看 M95080W 的数据手册,赶紧去看! https://blog.csdn.net/lu_embedded/article/details/80682912硬件连接 i.MX6q 是基于 NXP 四核 ARM Cortex-A9 架构的高性能处理器,它上面有 5 个 SPI 控...转载 2019-06-06 08:52:14 · 978 阅读 · 1 评论 -
迅为嵌入式开发平台4418/6818看门狗教程
1.进入到内核目录下,如下图所示:看门狗的驱动位于内核的: drivers/watchdog/nxp_wdt.c, 这个文件, 默认时间是 10 秒,如果想更改其它时间,通过修改该文件里面的CONFIG_NXP_WATCHDOG_DEFAULT_TIME 这个宏定义,或者编译内核时通过传递参数方式。2.然后输入:export ARCH=arm,如下图所示:3.内核目录下会有 4418&...转载 2018-12-21 16:42:07 · 201 阅读 · 0 评论 -
基于ARM11的无线视频监控系统
摘 要:设计了一种基于ARM11+Linux 系统组成的无线视频监控系统。为提高运算速度,系统采用ARM11 微处理器S3C6410 作为主处理器,采用OV9650 摄像头作为图像采集设备,用硬编码方式对图像数据进行H264编码。接着通过WI-FI 无线网络和RTP 流媒体传输协议把已编码的数据传送到远端的服务器上显示。实现了运行稳定、速度快、成本低、体积小的无线视频监控平台,具有很大的实用价转载 2017-07-02 19:53:58 · 736 阅读 · 0 评论 -
arm-none-linux-gnueabi-gcc下载
Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,包括裸机程序、u-boot、Linux kernel、filesystem和App应用程序。使用时,按照主机平台,可以下载以下任一版本中的一个,结果是一样的:Linux解压版:在Linux主机(如Ubuntu、RedHat等)直接解压即可使用。推荐转载 2017-05-02 23:08:35 · 888 阅读 · 0 评论 -
实现Linux下带进度显示的cp命令 - xcp
Linux下复制文件的命令cp非常强大,就是有一点不是很好:没有进度提示。尤其是在复制很多大文件时,控制台仅仅停在那里什么信息都没有让人非常不爽。当然可以通过shell脚本实现进度提示,不过我喜欢直接一点的方式:用C程序解决。1.遍历想要知道进度首先要统计源文件的个数和大小,然后再复制,所以需要对源文件做两次遍历。当然也可以只遍历一遍,把遍历的结果保存在内存中这样后续操转载 2016-08-21 12:56:32 · 3334 阅读 · 0 评论 -
编译arm-linux-gdb和远程调试arm板程序
注:arm-linux-gdb的安装路径是/usr/local/arm-gdb1、arm-linux-gdb的编译安装下载gdb-6.8.tar.bz2至工作目录gdb源码下载:http://ftp.gnu.org/gnu/gdb/命令如下:$tar -jxvf gdb-6.8.tar.bz2$cd gdb-6.8$./configure --target=arm-转载 2015-10-05 10:27:44 · 366 阅读 · 0 评论 -
./configure -build,-host,-target设置
./configure -build,-host,-target设置build:执行代码编译的主机,正常的话就是你的主机系统。这个参数一般由config.guess来猜就可以。当然自己指定也可以。host:编译出来的二进制程序所执行的主机,因为绝大多数是如果本机编译,本机执行。所以这个值就等于build。只有交叉编译的时候(也就是本机编译,其他系统机器执行)才会build和host不同转载 2015-10-05 16:18:19 · 410 阅读 · 0 评论 -
pthread_detach(pthread_self());用法举例
void* reboot_thread_func(){ pthread_detach(pthread_self()); usleep(3000000);/*sleep 3s*/ system("reboot"); pthread_exit((void *)NULL);}可以自清除线程未释放的资源原创 2014-03-24 15:41:27 · 11579 阅读 · 0 评论 -
Busybox内置的tftpd, ftpd, telnetd, udhcpd, udhcpc配置
Busybox内置的tftpd, ftpd, telnetd, udhcpd, udhcpc配置Tftpd,ftpd可以由inetd来管理,telnetd理论上也可以由inetd来管理,但是目前开发板上我还没调通,只能telnetd独立运行。1. Tftpd配置步骤:#mkdir /tftp_ftp_dir //创建tftp server的根目录#vi /etc/i转载 2015-01-23 00:18:22 · 951 阅读 · 0 评论 -
mini2440 SPI驱动移植
最近项目需要,需要在mini2440上移植SPI驱动,板子需要驱动SPI设备,上网找了很多资源,但是很多都是有问题,最终在基本理解驱动结构的前提下,将SPI驱动顺利移植到mini2440。 我使用的内核版本是2.6.32.2,这个版本和2.6。29不一样,网上很多版本都是关于2.6.29,如果完全按照网上步骤,编译会出现问题,我做的步骤如下: 1、在转载 2014-04-24 23:27:43 · 563 阅读 · 0 评论 -
Linux驱动子系统之输入子系统(6)-gpio-keys
6.Gpio-keys6.1 概述l Gpio-keys是基于input子系统实现的一个通用的GPIO按键驱动。工程中我们常常会利用它来写按键驱动。 l gpio-keys驱动是基于platform来实现,platform driver(通用的部分)位于drivers/input/keyboard/gpio_keys.c,platform device通常和硬件有关,需要我们在转载 2014-04-24 23:24:33 · 751 阅读 · 0 评论 -
用busybox制作Linux文件系统制作过程详解
关键词:ARM Linux yaffs 文件系统 移植 Linux 文件系统简介Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。Linux下的文件转载 2014-04-10 23:42:31 · 2431 阅读 · 0 评论 -
互斥锁
1示例编辑下面举例:在Posix Thread中定义有一套专门用于线程同步的mutex函数。1. 创建和销毁有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; 在LinuxThread转载 2014-04-17 00:27:29 · 798 阅读 · 0 评论 -
秒杀多线程第四篇 一个经典的多线程同步问题
上一篇《秒杀多线程第三篇原子操作 Interlocked系列函数》中介绍了原子操作在多进程中的作用,现在来个复杂点的。这个问题涉及到线程的同步和互斥,是一道非常有代表性的多线程同步问题,如果能将这个问题搞清楚,那么对多线程同步也就打下了良好的基础。 程序描述:主线程启动10个子线程并将表示子线程序号的变量地址作为参数传递给子线程。子线程接收参数 -> sleep(50) ->全转载 2014-04-17 00:24:09 · 553 阅读 · 0 评论 -
s3c2440linux2.6mmc/sd驱动程序
这几天要做SD卡方面的事情了,看了看相关资料,从网上得到了 s3c2440 在2.6下的驱动,经过修改,目前可以工作了,现拿出与大家分享.希望共同学习讨论. 1 /* 2 * linux/drivers/mmc/s3c2410mci.h - Samsung S3C2410 SDI Interface driver 3 * 4 *转载 2014-04-30 17:22:59 · 888 阅读 · 0 评论 -
s3c2440-gpio-button(keyboard)驱动
/* * Keyboard driver for s3c2440 gpio button, Borzoi and Akita (SL-Cxx00 series) * * Copyright (c) 2005 Richard Purdie * * Based on corgikbd.c * * This program is free soft转载 2014-04-30 17:21:48 · 737 阅读 · 0 评论 -
TQ2440内核配置和编译及相关测试方法,(很全)
1.修改顶层Makefile ARCH ?= arm CROSS_COMPILE ?= arm-linux- 根据自己的环境修改交叉编译器前缀 2.修改arch/arm/boot/Makefile增加一行 @echo ' Kernel: $@ is ready' cp $@ /tftpboot/ 根据自转载 2014-04-30 17:18:21 · 1588 阅读 · 1 评论 -
linux设备驱动归纳总结(五):3.IO静态映射
linux设备驱动归纳总结(五):3.操作硬件——IO静态映射xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx有时候会觉得,每次访问硬件都要先通过ioremap来获取虚拟地址,其实有没有一种一劳永逸的方法,只要一次的操作,以后就能通过这个地址来访问硬件转载 2014-03-28 23:06:02 · 475 阅读 · 0 评论 -
用于编译可执行程序,静态库,动态库的通用的Makefile
经常写些测试程序,很有必要有个通用的Makefile节省开发时间【可执行程序通用makefile】------------------可执行程序通用makefile开始-----------------------------------CFLAGS = -g -D _DEBUG -I../../include -I/usr/local/include-L../../lib -L/us转载 2014-03-07 16:21:39 · 1203 阅读 · 0 评论 -
韦东山老师讲解移植uboot-2012.04.01的笔记总结
韦东山老师讲解移植uboot-2012.04.01的笔记总结本文摘录自韦东山老师嵌入式教学视频 其中开源的毕业班的课程,仅供参考一:准备移植1、从下面的官网下载最新的U-boot。用google英文版搜索最新的u-boot源码 ftp://ftp.denx.de/pub/u-boot/2、建立sourceinsight工程 a、解压并在E:\colin we原创 2014-03-07 11:50:33 · 5049 阅读 · 0 评论 -
s3c2410 linux板级文件设备的初始化过程
/*linux板级设备的初始化过程start_kernel() -> setup_arch(&command_line) -> mdesc = setup_machine(machine_arch_type) -> list = lookup_machine_type(nr) -> return struct machine_desc. 内核在启动的时候就是最先运行start_kernel原创 2014-03-13 11:25:55 · 781 阅读 · 0 评论 -
用Keil-MDK开发TQ2440裸机程序入门教程
觉得此编文章很详实,故转载之,来自http://www.amobbs.com/thread-5281512-1-1.html开发板也差不多买了半年了, 以前照着教程用的是软件是ADS,在win7下老是崩溃, 后来才知道ADS早就不提供支持了, ADS的公司怎样怎样了...(此处省略300..)然后我就捣鼓着怎么转到KEIL上来, 具体的例程代码我不会移植, 不过裸机开发是没什么问题转载 2014-03-07 16:25:27 · 709 阅读 · 0 评论