
linux
文章平均质量分 64
gooogleman
学海无涯,上下求索。
展开
-
linux 遇到的内核异常问题分析解决汇总
这些年曾经遇到过一些比较棘手的linux 异常问题,遗憾的是很多时候没有及时更新总结,导致我自己再次遇到的时候也要靠网络搜索相关文章去回忆解决办法,本文会持续更新,逐步完善linux 崩溃异常解决问题办法。 linux 崩溃异常无非是死锁,空指针,访问非法区域等问题,通常一般的方法,用静态的分析方式可以解决问题,实在比较复杂的情况只能用KGDB的等方式来解决。 为了方便调试和测试代码,内核提供了许多与内核调试相关的配置选项。这些选项大部分都在内核配置编辑器的内核开...原创 2020-08-04 14:47:07 · 1923 阅读 · 0 评论 -
Linker Scripts SECTIONS 部分的一个疑问
在M4 里面Linker Scripts 看到有如下部分描述SECTIONS{ .AppinInfo : { KEEP(*(.AppinInfo)) }>FLASH = 0xff}一直没搞明白 这个= 0xff 是什么意思,相关中文网是找遍了也没这部分解释,于是只能找老外的网站了,尤其是要找到官方资料。https://sourcew...原创 2019-11-20 10:17:55 · 626 阅读 · 0 评论 -
[-Wunused-but-set-variable]和[-Wunused-variable]的区别
公司严格要求,要求把警告全部消除才算是合格代码,于是打开gcc -Wall 有两个警告很像。warning: unused variable 'ucRet' [-Wunused-variable]warning: variable 'Attr' set but not used [-Wunused-but-set-variable]开始以为是一样的,直接屏蔽Attr就出错了...原创 2019-11-19 14:58:27 · 5143 阅读 · 0 评论 -
在Linux 下开发cortex M3 是什么感觉?
这几天,公司让去windows环境下用gcc 编译cortex M3的代码,囧。开始还真是有点摸不着头脑,后面发现已经做好了很多各种gcc的exe版本工具链,稍微修改一下Linux 下的Makefile就可以在window下 用bat 文件调用make.exe 编译了。不过真的没Linux强大,有时候报错也牛头不对马嘴,编译速度也是有点慢。既然都是编译器,那把cortex M3 代码用L...原创 2019-10-29 17:11:25 · 977 阅读 · 0 评论 -
warning: jobserver unavailable: using -j1. Add `+' to parent make rule问题怎么解决
最近在整windows 下的gcc 工具链编译,发现bat 调用make -j4 会有如下警告warning:jobserverunavailable:using-j1.Add`+'toparentmakerule,以为是windows 下make 不支持多核编译的原因,但是今天我把同一份代码放到ubuntu下 编译,一样的警告,并且ubuntu 编译别的Linux ...原创 2019-10-29 16:49:41 · 4635 阅读 · 1 评论 -
cmake 从入门到放弃
以前在Linux下看过一些auto make 工具生成的Makefile,感觉生成的Makefile有一个原则,就是死命让人看不懂,显得很高深莫测,我不甘心,一些网友又给我推荐cmake,搜索一下果然是吹的神乎其技,并且说大型工程,自己手工写Makefile的人就是SB。于是我就整起来,开始在windows下整,遇到一些问题始终很奇怪,解决不了,于是还是在ubuntu下来搞吧。 ...原创 2019-10-22 20:27:31 · 2341 阅读 · 2 评论 -
IoT设备WiFi配网及现状
IoT设备WiFi配网及现状原文地址https://www.cnblogs.com/rockyching2009/p/10042263.html一、引言现下,物联网(IoT/IoE)中智能产品普遍采用WiFi与路由器完成连接,然后通过手机和云端进行数据交互,拓扑结构如下:由上图可见,APP和智能产品之间并没有直接的交互,而是夹杂了”云“端(当然,我们也可以直接走局域网)。...转载 2019-05-23 17:49:57 · 2241 阅读 · 0 评论 -
Linux libc 库文件更新
觉得busybox 里面用的一些libc 库函数不支持Linux的一些内核特性,需要更新,怎么办?首先就是要查看版本,然后去下载代码过来看,如果有必要自己改一下,更新一下版本值了IDE,或者想办法避开。readelf -a /bin/busybox |grep NEEDED 0x00000001 (NEEDED) Shared library: [...原创 2018-12-22 12:38:06 · 1818 阅读 · 0 评论 -
彻底理解Linux的各种终端类型以及概念
origin: http://blog.youkuaiyun.com/dog250/article/details/78766716这篇文章的动机有两个,上周同事问我关于Linux终端的问题,我简要解答后发现有些概念确实自己也说不清楚,然而这些概念我曾经是弄清楚了的,但也只是曾经。 大概六七年前,我是懂这些东西的,当时做了一些记录: linux终端闲谈:http://blog.youkuaiyun.com/do...转载 2018-12-26 09:45:29 · 987 阅读 · 1 评论 -
关于Linux 驱动以及应用调试信息打印方式总结
1.应用打印调试1.1 printf printf 是最简单的应用调试打印方式,默认打印在调试串口上,如果有telnet ssh 这些伪终端运行程序,printf 就打印在当前终端上。printf 的好处就是简单易用,因为我们第一个c应用程序就用了printf了。囧,我当时Helloworld 没好好学习导致后面很窘迫。不过printf 也带有较大的缺陷,那就是比较耗时,如果p...原创 2019-01-02 14:36:52 · 2241 阅读 · 0 评论 -
Linux 应用程序信号基础知识总结
以前看的底层的东西居多,不过底层原厂做的相对完善了,导致底层的工程师总是在做一些硬件+驱动/软件测试的移植工作,很多Linux 精妙的东西没学到,觉得不是Linux内核简单,而是目前的生态链来说,驱动工程师只有原厂有较大锻炼罢了,现在有时间就看看应用的东西吧,写点基础的总结。1.发送信号命令 kill -信号 要发送的进程id(pid) 例如kill -S...原创 2019-02-14 10:46:15 · 595 阅读 · 0 评论 -
解决Linux下USB设备节点ttyUSB名不固定的问题,生成固定USB转串口设备节点
原文链接:http://blog.sina.com.cn/s/blog_8b58097f0102wxm3.html 感谢博主分享!!! 1. Linux下USB设备节点名不固定问题经常会遇到以USB转串口设备为例,通常设备节点名为ttyUSBx(x为0~n),Linux内核会根据设备插入的先后顺序进行编号的分配,比如第一个插入的设备编号为ttyUSB0,然后依此加1,变为tty...转载 2018-12-27 13:43:21 · 4047 阅读 · 1 评论 -
Linux arm 集成busybox telnetd 功能遇到的坑
以前用过蛮多telnet 的,这次只有一个串口,被BT 占用后就没有调试口了,也没网卡,于是就想到用WiFi 来用telnetd 这个功能,没想到以前胡乱网上看看,复制粘贴上去就能用的,这次死活不行。 1、mount -t devpts devpts /dev/pts 提示 no such file 可是我明明在rcS 文件有这些命令: ...原创 2018-12-15 10:53:51 · 1548 阅读 · 0 评论 -
select机制的驱动实现及原理
一、驱动实现select机制的步骤 1、首先初始化一个等待队列头 2、在驱动中实现poll函数,该函数只需做两件事情 a、使用poll_wait()函数将等待队列添加到poll_table中。 b、返回描述设备是否可读或可写的掩码。 3、在驱动的相应地方调用wake_up()函数,唤醒等待队列。 两点说明: a、等...转载 2018-11-27 20:08:37 · 2291 阅读 · 0 评论 -
细说linux IPC(十一):各种IPC形式比较总结(完)
【版权声明:尊重原创,转载请保留出处:blog.youkuaiyun.com/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】 这个系列基本上到现在为止已经差不多把linux上的各种常用的IPC介绍完了,linux上面的IPC大多都是从UNIX上面继承而来。 最初Unix IPC包括:管道、FIFO、信号。System V ...转载 2018-11-17 15:14:03 · 1405 阅读 · 0 评论 -
MIPI调试经验
原文地址:http://blog.youkuaiyun.com/g_salamander/article/details/9163455 作者总结的不错,转载过来学习,最近调试mipi 的东西,多看几遍收获很大。以下是最近几个月在调试 MIPI DSI / CSI 的一些经验总结,因为协议有专门的文档,所以这里就记录一些常用知识点:一、D-PHY1、传输模式转载 2016-09-04 21:56:46 · 4437 阅读 · 0 评论 -
imx6 Linux 编译烧写指南
转载自http://blog.youkuaiyun.com/wince_lover/article/details/51456745 在Ubuntu14.04 64位系统上1 搭建编译环境 1.1 安装软件包 sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essent转载 2016-07-20 23:19:16 · 10589 阅读 · 0 评论 -
更换内存容量和挂载bank需要修改的地方——Starting kernel ... Uncompressing Linux...的另外一种可能
很久没有写一篇比较完整的技术文章,今天刚好遇到一个问题,解决了感触比较大:这个问题明明是我以前遇到过的,但是我却记不得,我还一筹莫展,没意识到问题所在,只怪我当时没有写当时的解决办法,一年后在写出来亡羊补牢也不迟。 问题是这样的:我们自己做的电路板,在wince 下没有任何问题,但是在Android下的时候,偶尔会提示inand 存储错误,当时我认为有两种可能性:1原创 2015-05-15 17:23:53 · 4403 阅读 · 0 评论 -
关于三星cortex A9 Sate4412 开发板 uboot 启动的一些问题释疑
作者:gooogleman 日期:2013.11.27 最近,发现4412 和S5PV210的一些iNand/TF启动方式有些不同,4412 的一些磁盘索引不是固定在某一个通道的上的,而S5PV210 是固定的,这就导致一些人在烧写4412 ,分区格式化的时候会莫名其妙,不知所以然,现在看看代码,看是4412 代码到底是为何会这样了。原创 2013-12-10 07:33:25 · 5928 阅读 · 3 评论 -
使用 /sys 文件系统访问 Linux 内核
转自https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/sysfs 与 /syssysfs 文件系统总是被挂载在 /sys 挂载点上。虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6内核修正了这一规则,要求 sysfs 总是挂载在 /sys 目录上;针对以前的...转载 2019-03-21 16:40:54 · 492 阅读 · 0 评论 -
LINUX下目标文件的BSS段、数据段、代码段
转自http://blog.chinaunix.net/uid-27018250-id-3867588.htmlLINUX下目标文件的BSS段、数据段、代码段操作系统:ubuntu 13.04工具:gcc, objdump, readelf参考:《程序员自我修养》代码编译后的机器指令经常被放在代码段里,代码段名为".text";已初始化的全局变量和已初始化的局部静态变量经常放在数据...转载 2019-05-22 11:38:29 · 494 阅读 · 0 评论 -
linux文件描述符限制及使用详解
背景最近调试一款网关设备,它部署在客户端和服务端之间。在工作时,它同时接收来自客户端的连接,同时又向服务端建立连接。网关在完全接收来自客户端的数据后,会校验数据合法性,只有数据合法,网关才会向服务器建立连接并转发数据。这样,当存在一个客户端和服务端的通信时,网关有可能需要同时建立两个连接,占用两个fd。这对网关的数据处理能力提出了较高的要求。在调试中出现的现象是,当客户端以较多的并发...转载 2019-10-09 09:52:48 · 461 阅读 · 0 评论 -
htonl/htons以及ntohl/ntohs等函数使用说明
htonl/htons以及ntohl/ntohs等函数都是为了解决主机和网络字节序不同而实现的函数,不同的是使用情况不同:htonl/htons用在主机设置相关参数到网络之前,ntohl/ntohs是从网络读出参数到主机之前。#include <arpa/inet.h> uint32_t htonl(uint32_t hostlong); ui...原创 2019-09-17 19:05:24 · 1871 阅读 · 0 评论 -
int socket(int domain, int type, int protocol); domain AF_UNIX,PF_UNIX, AF_LOCAL,AF_NETLINK等了解
#include <sys/socket.h> int socket(int domain, int type, int protocol); 函数里面domain 的值有如下 Name Purpose Man page AF_UNIX, AF_LOCAL ...原创 2019-09-11 17:48:02 · 3431 阅读 · 2 评论 -
结构体(或者联合体)变量的成员在内存里是如何分布的
结构体(或者联合体)变量的成员在内存里是如何分布的1.概述结构体变量的成员在内存里是如何分布的、成员先后顺序是怎样的、成员之间是连续的还是分散的、还是其他的什么形式?这些问题既和软件相关又和硬件相关。所谓软件相关主要是指和具体的编程语言的编译器的特性相关,编译器为了优化CPU访问内存的效率,在生成结构体成员的起始地址时遵循着某种特定的规则,这就是所谓的结构体成员“对齐”;所谓硬件相关主要...转载 2019-08-15 17:47:58 · 610 阅读 · 0 评论 -
各种进程间通信效率比較以及使用注意事项
各种进程间通信效率比較类型 无连接 可靠 流控制 记录消息类型 优先级 普通PIPE N Y Y N 流PIPE N Y Y N 命名PIPE(FIFO) N Y Y N 消息队列 N Y Y Y 信号量 ...原创 2019-08-19 16:56:33 · 3052 阅读 · 0 评论 -
谨慎使用多线程中的fork
谨慎使用多线程中的fork2015-02-07 19:23 by origins 转自https://www.cnblogs.com/liyuan989/p/4279210.html前言在单核时代,大家所编写的程序都是单进程/单线程程序。随着计算机硬件技术的发展,进入了多核时代后,为了降低响应时间,重复充分利用多核cpu的资源,使用多进程编程的手段逐渐被人们接受和掌握。然而因为创建一...转载 2019-08-05 14:16:42 · 444 阅读 · 0 评论 -
wpa_supplicant与wpa_cli之间通信过程
wpa_supplicant编译:1. wpa_supplicant/Android.mk :-- wpa_cli-- wpa_supplicant-- libwpa_client.so2. hostapd/Android.mk :-- hostapd_cli-- hostapd从通信层次上划分,wpa_supplicant提供向上的控...转载 2019-07-25 17:53:19 · 582 阅读 · 1 评论 -
进程空间分配和堆栈大小
进程空间分配和堆栈大小1. Linux中进程空间的分配情况如下: 从上图可以看出,进程的空间分配:与进程相关的数据结构(页表、内核栈、task) ---> 物理内存 ---> 内核代码和数据---> 用户栈 ---> 共享库的内存映射区 ---> 运行时堆 --->未初始化数据段.bss---> 已初始化数据段.data ---...转载 2019-07-19 14:54:40 · 3834 阅读 · 1 评论 -
ulimit -n 修改
ulimit -n 修改通过ulimit -n命令可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值。那么应该在哪里设置呢?最正确的做法是在/etc/security/limits.conf里设置: [root@localhost security]# ulimit...转载 2019-07-18 17:24:37 · 1279 阅读 · 0 评论 -
Realtek WiFi 模块实现AP和station 模式同时启用
问一下周边的朋友,Realtek WiFi 模块是否能实现AP和station 模式同时启用,大家都均确定的说这是不能的。后面网上看看,说可以的,于是找模块供应商咨询了一下,果然是可以的,其实原厂驱动已经做好了,非常简单,流程如下: 1、在WiFi驱动Makefile文件里面加上EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE 然...原创 2019-06-14 13:49:01 · 4562 阅读 · 1 评论 -
基于Linux WiFi ap 的hostapd 工具的使用方法
上一篇文章基于Linux wpa_supplicant wpa_cli 工具调试WiFi sta 网络连接讲了WiFi sta 的wpa工具连接方法,现在来讲讲WiFi ap 的hostapd 工具的使用方法。 执行如下脚本即可killall -q wpa_supplicantkillall -q udhcpckillall -q udhcpdkillall...原创 2019-05-30 10:59:43 · 2218 阅读 · 1 评论 -
基于Linux wpa_supplicant wpa_cli 工具调试WiFi sta 网络连接
在网上看了不少这方面的文章,可惜总是照着用行不通,自己玩了一下,写出来,我下面是基于Linux 非Android平台操作的。必要的工具:wpa_supplicant wpa_cliudhcpcwpa_supplicant -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -dd -Bwpa_cli -iwl...原创 2019-05-30 10:54:32 · 1293 阅读 · 0 评论 -
在S5pv210 uboot上增加I2C 读写功能
6410 uboot 增加IIC 读写功能两下就搞定了,但是S5pv210 增加uboot IIC 读写功能却出状况了#define CONFIG_CMD_I2C//#undef CONFIG_S3C64XX_I2C /* this board has H/W I2C */#define CONFIG_S3C64XX_I2C#ifdef CONFIG原创 2013-12-11 00:31:29 · 3718 阅读 · 0 评论 -
uboot编译突然出现has EABI version 5, but target u-boot has EABI version 0错误
uboot编译突然出现has EABI version 5, but target u-boot has EABI version 0错误S5pv210 uboot 编译很久了,最近增加了一些gui 的功能,但是编译居然出现如下错误,why?!/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-ld: error: Source o原创 2013-12-10 07:24:00 · 8960 阅读 · 2 评论 -
发现S5pv210 uboot 一个 Inp32(_addr) 和readl(_addr)奇葩问题
发现S5pv210 uboot 一个 Inp32(_addr) 和readl(_addr)奇葩问题在S5pv210 的uboot里面,有#define Inp32(_addr) readl(_addr)但是if(!(Inp32(0xE0200C04)&0x02))和if(!(readl(0xE0200C04)&0x02))使用效果完全不一样,让原创 2013-12-10 07:21:13 · 1866 阅读 · 0 评论 -
uboot1.1.6顶层makefile详解
uboot1.1.6顶层makefile详解VERSION = 1//主版本号PATCHLEVEL = 1//次版本号SUBLEVEL = 6//修正版本号EXTRAVERSION =//版本号扩展U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)//这个Uboot的版本为1.1.6V转载 2012-02-21 20:05:12 · 2052 阅读 · 3 评论 -
linux下查找文件命令find
linux下查找文件命令find1. find / -name httpd.conf这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:etc/httpd/conf/httpd.conf这就是httpd.conf这个文件在Li转载 2012-02-21 11:45:10 · 1186 阅读 · 0 评论 -
找到《跟我一起写Makefile》PDF文档,感觉就是不一样!真是爽呆了!
太感动了!我以前做wince几年的,根本不涉及Makefile。现在转型android,看Makefile都看不懂,惭愧,一些前辈推荐一些书籍,什么 《shell编程》以及一些英文书籍,简直是大海捞针,看都看不到自己想要的,后来有人给我介绍陈老师写的《跟我一起写Makefile》 我百度到这里,并且找到《跟我一起写Makefile》PDF文档,感觉就是不一样!真是爽呆了!通俗易懂,非常适合初学者看原创 2012-02-27 18:39:15 · 3528 阅读 · 2 评论 -
u-boot mkconfig文件解析
mini2440_config : unconfig@$(MKCONFIG) $(@:_config=) arm arm920t mini2440 tekkamanninja s3c24x0unconfig:@rm -f $(obj)include/config.h $(obj)include/config.mk \ $(obj)board/*/config.tmp $(转载 2012-02-27 20:06:41 · 1994 阅读 · 0 评论