linux系统
michaelcao1980
这个作者很懒,什么都没留下…
展开
-
ubuntu双网络设置
ubuntu16.04 eth0 eth5,eth0:内网(静态IP),eth5:外网(DHCP分配)root@localhost:~# ifconfigeth5 Link encap:Ethernet HWaddr 00:11:22:33:44:51 inet addr:172.21.171.68 Bcast:172.21.171.255 Mask:255.255.254.0 inet6 addr: fe80::4a41:bfd0:68b9:e9...原创 2020-06-22 17:14:30 · 524 阅读 · 0 评论 -
Unable to handle kernel NULL pointer dereference at virtual address
1:从sd卡出错log里可以看出来pc指针以及出错位置PC is at dw_mci_pre_dma_transfer.isra.19+0x7c/0x158pc : [<8032e130>] lr : [<8032e14c>] psr: 000f0013但是不知道在dw_mci_pre_dma_transfer内部的具体位置2:arm-none-linux-gnue...原创 2020-04-30 16:30:01 · 2078 阅读 · 0 评论 -
内核参数整理
以下内核参数未做相关优化,均使用系统默认值net.ipv4.tcp_mem = 196608 262144 393216net.core.wmem_max = 131071net.core.rmem_max = 131071net.ipv4.tcp_wmem = 4096 16384 4194304net.ipv4.tcp_rmem = 4096 87转载 2016-10-17 14:25:49 · 1560 阅读 · 0 评论 -
使用 Yocto Project 构建自定义嵌入式 Linux 发行版
Yocto Project™是一个开源项目,设立该项目是为了使嵌入式 Linux®开发更简单,更易于在不同架构间进行移植。本文将介绍该项目并提供如何开始使用该项目的分步指导。 概述Yocto Project 是一个开源协作项目,它提供了一些模板、工具和方法来支持面向嵌入式产品的自定义 Linux系统,不管硬件架构是什么。我想要告诉那些对 yocto这个名称不甚理转载 2016-09-19 08:42:46 · 4178 阅读 · 0 评论 -
根据内核Oops 定位代码
内核开发时有时候出现Oops,例如一个野指针会导致内核崩溃,如运行时出现以下log:现在有三种方法可以找出具体出现野指针的地方[plain] view plain copy print? 5.438972] bells bells: wm5102-aif1 samsung-i2s.0 mapping ok [ 5.4438转载 2016-09-20 09:08:13 · 528 阅读 · 0 评论 -
ARM Linux内核驱动异常定位方法分析--反汇编方式
Unable to handle kernel NULL pointer dereference at virtual address 0转载 2016-09-20 09:15:09 · 2524 阅读 · 0 评论 -
mips下编译iperf2.0.5
./configure --host=mips-linux更改config.h配置文件。#define HAVE_MALLOC 0 改为 #define HAVE_MALLOC 1#define malloc rpl_malloc 改为 /* #undef malloc */如果需要静态编译,则在src compat目录下分别将CXX原创 2016-10-11 16:06:38 · 972 阅读 · 0 评论 -
Udp丢包排查过程
1. 查看udp丢包,cat /proc/net/snmp | grep Udp(比netstat –su效果好)2. 查看网卡丢包(ifconfig 或者ethtool –S eth1)3. Netstat –alupt 查看队列里现存的包数,如果过多说明有问题。4. 查看socket队列长度,cat /proc/sys/net/core/rmem_default (wmem_def原创 2015-12-23 10:25:27 · 12853 阅读 · 0 评论 -
ubuntu12.04无法使用apt-get install问题
1:dtc -v 1.32:sudo apt-get install device-tree-compiler提示是最新的,但实际上有1.4,source.list link里也有deb文件3:download 1.4 device-tree-compiler.deb4:sudo apt-get install device-tree-compiler.deb原创 2016-09-05 14:57:49 · 2706 阅读 · 0 评论 -
Linux串口设置参数
在Linux环境下,串口名从ttyS0开始依次是ttyS1、ttyS2等。在本程序中,使用ttyS0作为通信串口。在打开ttyS0的时候,选项 O_NOCTTY 表示不能把本串口当成控制终端,否则用户的键盘输入信息将影响程序的执行; O_NDELAY表示打开串口的时候,程序并不关心另一端 的串口是否在使用中。在Linux中,打开串口设备和打开普通文件一样,使用的是open()系统调用。比如我么打开转载 2016-08-31 13:04:31 · 15281 阅读 · 0 评论 -
SPL
SPLSPL是uboot第一阶段执行的代码. 主要负责搬移uboot第二阶段的代码到内存中运行. SPL是由固化在芯片内部的ROM引导的. 我们知道很多芯片厂商固化的ROM支持从nandflash, SDCARD等外部介质启动. 所谓启动, 就是从这些外部介质中搬移一段固定大小(4K/8K/16K等)的代码到内部RAM中运行. 这里搬移的就是SPL. 在最新版本的uboot中, 可以看到SPL转载 2016-08-05 14:56:25 · 895 阅读 · 0 评论 -
vmware虚拟机下ubuntu扩大磁盘容量
1、vmware提供一个命令行工具,vmware-vdiskmanager.exe,位于vmware的安装目录下,比如C:/Program Files/VMware/VMware Workstation/vmware-vdiskmanager.exe.在windows的cmd窗口中,转到vmware的安装目录即:cd C:/Program Files/VMware/VMwa原创 2016-02-22 11:08:36 · 4171 阅读 · 0 评论 -
imx6设备树pinctrl解析
最近在移植linux,用到kernel版本为3.14.28,在高版本的内核源码中用到了设备树(device-tree),设备树中用到pinctrl的配置,记录一下。1、普通设置在配置串口时,pinctrl的配置信息如下所示:[cpp] view plain copy"font-size:14px;"原创 2016-02-24 14:07:16 · 19292 阅读 · 11 评论 -
Linux hwclock命令参数及用法详解
Linux机器上的时间比较复杂,有各式各样的时钟和选项等等。一:机器里有两个时钟:硬件时钟和系统时钟硬件时钟从根本上讲是CMOS时钟;系统时钟是由内核维护的,它是从1969年末(即传说中的标志Unix时代开端的那个拂晓)开始算起的累积秒数。在DOS或Mac系统中,起作用的是硬件时钟。而在Linux系统中,起作用的是系统时钟。在启动时,它靠读取硬件时钟获得计时起点,而不是原创 2015-05-07 09:25:57 · 2079 阅读 · 0 评论 -
linux自动以root登录,并自动启动用户程序的设置方
第一步:删除root用户vi /etc/passwd该文件的第一行:root:X:0:0:root:/root:/bin/bash,只需要把第二个字段X删除就可以。变为: root::0:0:root:/root:/bin/bashvi /etc/shadow该文件的第一行:root:!^&#*@(&#*&:0:99999:7::1,只需要把第二个字段删除就可以。变原创 2015-05-12 11:31:56 · 3948 阅读 · 0 评论 -
2014.4新版uboot启动流程分析
[cpp] view plaincopy# # (C) Copyright 2000-2013 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. # # SPDX-License-Identifier: GPL-2.0+ # VERSION = 2014转载 2015-03-18 10:05:53 · 2266 阅读 · 0 评论 -
灵活使用ARM汇编的WEAK关键字
ARM汇编中的WEAK关键字是一个很有意思的功能,如果能够灵活使用,能减轻不少繁琐。一般来说,这个关键字使用在IMPORT和EXPORT这两个声明段。 如果我们有一个名为ARM_Vectors的量表,向量表的第一个数值指向一个StackTop函数的地址。因为我们可能定义了该函数,也可能没有,为了代码的简便,我们可以使用WEAK关键字,如://////////////////////转载 2015-03-18 09:56:02 · 1118 阅读 · 0 评论 -
linux下稳定性测试工具
在网上查了有如下些:stresslinuxsuper piprimemprimenbenchcpuburngamutmersenne primestresscpu burn-inmemtestermemtest86memtest86++System Stability TesterBONNIE++/HPL_TEST(不是专门的压力转载 2015-03-13 16:25:06 · 10507 阅读 · 0 评论 -
iperf – TCP window size
在 iperf 中有兩個參數-w, –window #[KM] 用來指定 TCP window size-l, –len #[KM] 網路的 read 與 write 的 buffers (TCP 預設值為 8 KB)我們來看什麼是 TCP window size,說起來有點複雜,首先要來了解什麼是 TCP 三方交握 (TCP 3-way handshake) 以及 TCP Sli转载 2016-10-13 10:42:39 · 9208 阅读 · 0 评论 -
u-boot 2013.01.01 Makefile分析
######################################################################### # (C) Copyright 2000-2012 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. # # See file CREDITS for list of转载 2016-10-25 10:34:50 · 670 阅读 · 0 评论 -
Android切换usb和tcp adb方式
设备端执行:TCP/IP方式:setprop service.adb.tcp.port 5555stop adbdstart adbdusb方式:setprop service.adb.tcp.port -1stop adbdstart adbdPC端执行:TCP/IP方式:adb connect 192.168.1.199 (Android设备IP地址)us...原创 2019-06-28 15:50:51 · 1795 阅读 · 0 评论 -
IMX6Q 读取CPU温度命令
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governorsinteractive conservative ondemand userspace powersave performancedevice/fsl/mx6/init.rc:on property:sys.boot_completed=1# Set ...原创 2019-06-28 14:43:33 · 2341 阅读 · 1 评论 -
Linux runlevel 运行级别
runlevel可以认为是系统状态,形象一点,您可以认为runlevel有点象微软的windows操作系统中的Normal,safemode,和Command prompt only。Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多...原创 2019-05-28 10:27:58 · 644 阅读 · 0 评论 -
ubuntu16.04 64位中的32位兼容lib
sudo apt-get install lib32ncurses5 lib32z1原创 2018-07-11 17:41:35 · 1841 阅读 · 0 评论 -
Linux下常见的编译错误及解决方法
1、/bin/bash: bison: command not foundmake: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127解决方法:sudo apt-get install bison2、make: *** [out/host/linux-x86/obj/E...转载 2018-05-30 15:19:17 · 23567 阅读 · 0 评论 -
实现udev/mdev自动挂载与卸载
mdev是busybox中的一个udev管理程序的一个精简版,他也可以实现设备节点的自动创建和设备的自动挂载,只是在实现的过程中有点差异,在发生热插拔时间的时候,mdev是被hotplug直接调用,这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个...转载 2018-04-13 15:26:38 · 905 阅读 · 0 评论 -
rk3288 android6.0 dvfs
Platform: RockchipOS: Android 6.0Kernel: 3.10.92ddr,gpu以及arm的clock都受dvfs模块管控, 所以只要执行:root@rk3288:/ # cat /sys/dvfs/dvfs_tree [78603.186480] -------------DVFS TREE-----------[78603.186548] DVFS TREE:[7...原创 2018-04-17 15:35:29 · 1152 阅读 · 2 评论 -
设备树中设备的禁用和启用
device tree中的status标识了设备的状态,使用status可以去禁止设备或者启用设备,看下设备树规范中的status可选值默认情况下不设置status属性设备是使能的,下面看两具体的例子 下面是设备树中节点属性status的处理代码,位于内核的drivers/of/base.c中static bool __of_device_is_available(const struct de...转载 2018-03-02 15:02:07 · 2188 阅读 · 0 评论 -
linux内核中的GPIO系统
软件框架一、前言作为一个工作多年的系统工程师,免不了做两件事情:培训新员工和给新员工分配任务。对于那些刚刚从学校出来的学生,一般在开始的时候总是分配一些非常简单的任务,例如GPIO driver、LED driver。往往CPU datasheet的关于GPIO或者IO ports的章节都是比较简单的,非常适合刚入行的工程师。虽然GPIO子系统相关的硬件比较简单,没有复杂的协议转载 2017-07-19 15:09:13 · 6350 阅读 · 0 评论 -
Common Clock Framework系统结构
一、前言之前,wowo同学已经发表了关于CCF(Common Clock Framework)的三份文档,相信大家对CCF有一定的了解了,本文就是在阅读那三份文档的基础上,针对Linux 4.4.6内核的内核代码实现,记录自己对CCF的理解,并对CCF进行系统结构层面的归纳和整理。本文内容包括三个部分,第二章给出了整个CCF相关的block diagram图,随后在第三章对各个模块转载 2017-03-31 17:10:32 · 484 阅读 · 1 评论 -
Linux common clock framework(3)_概述
1. 前言前面两篇clock framework的分析文章,分别从clock consumer和clock provider的角度,介绍了Linux kernel怎么管理系统的clock资源,以及device driver怎么使用clock资源。本文将深入到clock framework的内部,分析相关的实现逻辑。注:本文使用的kernel版本为linux-3.10.29。虽然转载 2017-03-31 16:59:26 · 565 阅读 · 0 评论 -
Linux common clock framework(2)_概述
1. 前言本文接上篇文章,从clock driver的角度,分析怎么借助common clock framework管理系统的时钟资源。换句话说,就是怎么编写一个clock driver。由于kernel称clock driver为clock provider(相应的,clock的使用者为clock consumer),因此本文遵循这个规则,统一以clock provider命名。转载 2017-03-31 16:58:23 · 517 阅读 · 0 评论 -
Linux common clock framework(1)_概述
1. 前言common clock framework是用来管理系统clock资源的子系统,根据职能,可分为三个部分:1)向其它driver提供操作clocks的通用API。2)实现clock控制的通用逻辑,这部分和硬件无关。3)将和硬件相关的clock控制逻辑封装成操作函数集,交由底层的platform开发者实现,由通用逻辑调用。因此,蜗蜗会将clock转载 2017-03-31 16:56:37 · 482 阅读 · 0 评论 -
v4l2驱动编写篇
大部分所需的信息都在这里。作为一个驱动作者,当挖掘头文件的时候,你可能也得看看include/media/v4l2-dev.h,它定义了许多你将来要打交道的结构体。一个视频驱动很可能要有处理PCI总线,或USB总线的部分。这里我们不会花什么时间还接触这些东西。通常会有一个内部一I2C接口,我们在这一系列的后续文章中会接触到它。然后还有一个V4L2的子系统接口。这个子系统是围绕video_dev转载 2016-11-02 15:29:03 · 3893 阅读 · 0 评论 -
字节对齐
一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值的话需要访问转载 2016-10-18 08:49:46 · 329 阅读 · 0 评论 -
TCP参数优化
net.ipv4.tcp_mem内核分配给TCP连接的内存,单位是Page,1 Page = 4096 Bytes,可用命令查看: #getconf PAGESIZE 4096 net.ipv4.tcp_mem = 196608 262144 393216 第一个数字表示,当 tcp 使用的 page 少于 196608 时,kerne转载 2016-10-17 14:28:19 · 1847 阅读 · 0 评论 -
/etc/fstab 文件解释
文件fstab包含了你的电脑上的存储设备及其文件系统的信息。它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件。这个文件的全路径是/etc/fstab。它只是一个文本文件,你能够用你喜欢的编辑器打开它,但是必须是root用户才能编辑它。同时fsck、mount、umount的等命令都利用该程序。具体来说:用fstab可以自动挂载各种文件系统格式的硬盘、分区、可移动设转载 2015-03-13 16:15:36 · 626 阅读 · 0 评论 -
Linux芯片级移植与底层驱动(基于3.7.4内核)
1. SoC Linux底层驱动的组成和现状为了让Linux在一个全新的ARM SoC上运行,需要提供大量的底层支撑,如定时器节拍、中断控制器、SMP启动、CPU hotplug以及底层的GPIO、clock、pinctrl和DMA硬件的封装等。定时器节拍、中断控制器、SMP启动和CPU hotplug这几部分相对来说没有像早期GPIO、clock、pinctrl和DMA的实现那么杂乱转载 2015-03-10 17:07:08 · 1363 阅读 · 0 评论 -
ARM Linux 3.x的设备树
1. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach转载 2015-03-10 17:05:23 · 1051 阅读 · 0 评论 -
linux高端内存映射
1 内核空间和用户空间 用户空间:在Linux中,每个用户进程都可以访问4GB的线性虚拟内存空间。其中从0到3GB的虚存地址是用户空间,通过每个进程自己的页目录、页表,用户进程可以直接访问。内核空间:从3GB到4GB的虚存地址为内核态空间,存放供内核访问的代码和数据,用户态进程不能访问,只有内核态进程才能寻址。所有进程从3GB到4GB的虚拟空间都是一样的,linux以此方式让内核态转载 2014-03-03 16:23:08 · 5115 阅读 · 0 评论