技术-linux
文章平均质量分 61
shiyongyue
这个作者很懒,什么都没留下…
展开
-
pthread是什么
在需要多任务的编程中,多数情况下都是使用的pthread,网上查找资料的话,也有很多使用fork/vfork的例子。pthread是线程,fork是进程,这是没有疑问的。但是有资料又说,linux不区分进程和线程,或者说根本就没有实现线程。可但是又有资料明明写着,有linux有内核线程。。。,查看内核代码确有kernel_thread,真是傻傻分不清楚。那么,下面就试着理一理头原创 2017-04-20 09:42:06 · 5108 阅读 · 0 评论 -
Device Tree:代码分析
转自http://www.wowotech.net/device_model/dt-code-analysis.html本文主要内容是:以Device Tree相关的数据流分析为索引,对ARM linux kernel的代码进行解析。主要的数据流包括:1、初始化流程。也就是扫描dtb并将其转换成Device Tree Structure。2、传递运行时参数传递以及pla转载 2017-07-14 11:06:09 · 413 阅读 · 0 评论 -
gpio子系统和pinctrl子系统(一)
转自http://blog.rongpmcu.com/gpiozi-xi-tong-he-pinctrlzi-xi-tong/前言 随着内核的发展,linux驱动框架在不断的变化。很早很早以前,出现了gpio子系统,后来又出现了pinctrl子系统。在网上很难看到一篇讲解这类子系统的文章。就拿gpio操作来说吧,很多时候都是简单的调用gpio子系统提供的api,然后根据s转载 2017-07-14 11:46:40 · 26112 阅读 · 2 评论 -
gpio子系统和pinctrl子系统(二)
转自http://blog.rongpmcu.com/gpiozi-xi-tong-he-pinctrlzi-xi-tong-zhong/pinctrl子系统核心实现分析pinctrl子系统的内容在drivers/pinctrl文件夹下,主要文件有(建议先看看pinctrl内核文档Documentation/pinctrl.txt): core.c devicetr转载 2017-07-14 11:47:57 · 7070 阅读 · 1 评论 -
gpio子系统和pinctrl子系统(三)
转自http://blog.rongpmcu.com/gpiozi-xi-tong-he-pinctrlzi-xi-tong-xia/情景分析打算从两个角度来情景分析,先从bsp驱动工程师的角度,然后是驱动工程师的角度,下面以三星s3c6410 Pinctrl-samsung.c为例看看pinctrl输入参数的初始化过程(最开始的zynq平台的pin配置貌似是通过bitst转载 2017-07-14 11:49:02 · 2013 阅读 · 0 评论 -
从zImage中提取出Image的方法
对于使用gzip压缩的zImage: dd if=zImage bs=1 skip=$(LC_ALL=C grep -a -b -o $'\x1f\x8b\x08\x00\x00\x00\x00\x00' zImage | cut -d ':' -f 1) | gunzip >Image对于使用zx压缩的zImage:dd if=arch/arm/boot/zImage bs=原创 2017-06-26 09:46:35 · 3038 阅读 · 0 评论 -
arm-linux启动过程中的内存布局
本文摘录于:http://www.cnblogs.com/armlinux/archive/2012/02/01/2396766.html在arm平台下,zImage.bin压缩镜像是由bootloader加载到物理内存,然后跳到zImage.bin里一段程序,它专门于将被压缩的kernel解压缩到KERNEL_RAM_PADDR开始的一段内存中,接着跳进真正的kernel去执行。该ker转载 2017-06-27 11:02:44 · 814 阅读 · 0 评论 -
ARM LINUX内核如何确定自己的实际物理地址
新旧内核有所不同在旧的内核是通过宏KERNEL_RAM_PADDR来确定.macro pgtbl, rd ldr \rd, =(KERNEL_RAM_PADDR - 0x4000) .endm __create_page_tables: /* r4 = KERNEL_RAM_PADDR –原创 2017-06-27 13:04:45 · 3057 阅读 · 0 评论 -
Kernel low-level debugging functions linux汇编的调试方法
转自http://blog.csdn.net/jackjones_008/article/details/42424531最近在调试linux内核,跟踪启动过程。发现在没有turn on mmu之前,可以使用物理地址,通过向串口Fifo丢数据的方式输出调试信息。但是代码一旦运行到开启mmu,在汇编阶段,mmu只做了物理内存的映射,并没有映射io,所以就无法访问串口了。此时应该通转载 2017-06-27 14:15:33 · 682 阅读 · 0 评论 -
LINUX内核代码在线阅读网址
http://lxr.linux.no/原创 2017-06-28 10:44:25 · 1450 阅读 · 0 评论 -
Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
转自http://blog.csdn.net/lu_embedded/article/details/53061901一、概述 通过 sysfs 方式控制 GPIO,先访问 /sys/class/gpio 目录,向 export 文件写入 GPIO 编号,使得该 GPIO 的操作接口从内核空间暴露到用户空间,GPIO 的操作接口包括 direction 和 value转载 2017-07-27 09:02:05 · 529 阅读 · 0 评论 -
用户态使用gpio监听中断
比如我想监听PA7上的电平变化(也就是边沿触发),那么应该先向“/sys/class/gpio/gpio7/direction”写入“in”,然后向“/sys/class/gpio/gpio7/edge”写入“both”,然后对”/sys/class/gpio/gpio7/value”执行select/poll操作。代码如下:poll_test.c#include #incl原创 2017-07-27 15:50:42 · 8131 阅读 · 3 评论 -
u-boot中添加命令
看下ping命令实现的例子:文件common/cmd_net.cstatic int do_ping(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]){if (argc return -1;NetPingIP = string_to_ip(argv[1]);if (NetPingIP == 0)原创 2017-08-07 08:48:11 · 342 阅读 · 0 评论 -
uboot内存布局
转自:http://www.latelee.org/porting-uboot/139-u-boot-porting-memory-allocation.html花了两天时间来专门研究u-boot的内存分布,这个图网上已经有了,但只是大致图形,没有详细、深入解析。所以自己就专门画了图,添加一些东西。此外,还专门测试了一下u-boot下全局变量、未初始化变量等等的地址分布,也画了一张转载 2017-10-11 10:36:28 · 1171 阅读 · 0 评论 -
uboot移植-内存分布
转自:http://blog.csdn.net/hailin0716/article/details/18504693设置堆栈 uboot内存使用图 1、uboot第一阶段start.S 设置堆栈 stack_setup: ldr r0, _TEXT_BASE /* upper 128 KiB:转载 2017-10-11 10:42:08 · 885 阅读 · 0 评论 -
ubuntu下如何把用户的语言环境变量改为中文
查看当前系统的语言环境ubuntu@VM-14-193-ubuntu:~$ localeLANG=en_US.UTF-8LANGUAGE=en_US:LC_CTYPE="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_MONETARY="en_US.UT原创 2017-10-16 16:51:10 · 5281 阅读 · 0 评论 -
ARM linux 多核启动分析
图片比较大 ,可能看不清楚,可以保存图片然后查看。原创 2017-06-13 13:17:44 · 964 阅读 · 0 评论 -
Linux时间子系统之:Tick Device layer综述
转自http://www.wowotech.net/timer_subsystem/tick-device-layer.html一、前言时间子系统中的tick device layer主要涉及kernel/time/tick-*相关的文件,本文的主要内容就是从high level层次(不纠缠在具体的每行代码)描述tick device layer的运作逻辑。如果说每个.转载 2017-07-04 10:47:18 · 660 阅读 · 0 评论 -
Uboot 中的hush shell
今天有一个要求,要在uboot启动后不断的执行一些命令。方法记录一下:1.直接改代码,比较麻烦。2.制作uboot的执行脚本,用mkimage命令,然后通过tftp下载到内存,然后通过source命令来执行。这个也挺麻烦的。3.还有一个方法是使用hush shell,uboot中定义了CONFIG_SYS_HUSH_PARSE就可以支持,网上有资料说uboot中的hush shel原创 2017-06-16 15:26:34 · 3811 阅读 · 0 评论 -
uboot详细分析
很详细,可作为索引:http://www.cnblogs.com/lcw/p/3802644.html转载 2017-06-16 15:50:21 · 245 阅读 · 0 评论 -
uboot中ethernet网口实现分析
对与phy部分的说明可以作为资料参考:http://blog.chinaunix.net/uid-20528014-id-3051386.html转载 2017-06-16 15:52:06 · 613 阅读 · 0 评论 -
ARM多核引导过程
轉自: http://blog.csdn.net/cs0301lm/article/details/41078599 当电源按钮按下后,到shell命令起来,能理解4个CPU核到底发生了什么是非常重要的,嵌入Linux内核的引导过程和pc是不一样的,原因是环境设置和可用硬件都不一样了。比如,嵌入式没有硬盘和PC BIOS,取而代之的是一个引导监控器和flash 盘。所以两者基本的差一点是“找转载 2017-06-09 11:22:23 · 575 阅读 · 0 评论 -
SMP多核启动以及CPU热插拔驱动
转自:http://blog.csdn.net/21cnbao/article/details/85450884. SMP多核启动以及CPU热插拔驱动在Linux系统中,对于多核的ARM芯片而言,Bootrom代码中,CPU0会率先起来,引导Bootloader和Linux内核执行,而其他的核则在上电时Bootrom一般将自身置于WFI或者WFE状态,并等待CPU0给其发C转载 2017-06-09 11:53:58 · 3726 阅读 · 0 评论 -
ARM linux SMP
转自:http://blog.chinaunix.net/uid-26817832-id-3450609.html1、先记录一个栈__cpu_up boot_secondary secondary_startup __v7_setup __enable_转载 2017-06-09 16:00:27 · 1934 阅读 · 0 评论 -
Linux芯片级移植与底层驱动(基于3.7.4内核)
转自http://blog.csdn.net/21cnbao/article/details/85450881. SoC Linux底层驱动的组成和现状为了让Linux在一个全新的ARM SoC上运行,需要提供大量的底层支撑,如定时器节拍、中断控制器、SMP启动、CPU hotplug以及底层的GPIO、clock、pinctrl和DMA硬件的封装等。定时器节拍、中断控制器转载 2017-07-04 08:52:06 · 638 阅读 · 0 评论 -
Linux CCF框架简要分析和API调用
转自http://blog.csdn.net/lidroid/article/details/502921251. 前言从Linux3.10内核开始就正式的使用CCF框架了,在以前Clock部分,虽然也提供了相应的API根据名字去获取Clock,设置频率,获取父时钟,设置父时钟的函数,但是这些API都是由每个SoC单独实现,导致了代码的差异很大,于是就引入了一个新的通用转载 2017-07-04 09:08:23 · 1079 阅读 · 0 评论 -
Linux common clock framework(1)_概述
转自http://www.wowotech.net/pm_subsystem/clk_overview.html1. 前言common clock framework是用来管理系统clock资源的子系统,根据职能,可分为三个部分:1)向其它driver提供操作clocks的通用API。2)实现clock控制的通用逻辑,这部分和硬件无关。3)将和硬件相关的cloc转载 2017-07-04 09:42:12 · 287 阅读 · 0 评论 -
Linux common clock framework(2)_clock provider
转自http://www.wowotech.net/pm_subsystem/clock_provider.html1. 前言本文接上篇文章,从clock driver的角度,分析怎么借助common clock framework管理系统的时钟资源。换句话说,就是怎么编写一个clock driver。由于kernel称clock driver为clock provider(相转载 2017-07-04 09:44:28 · 191 阅读 · 0 评论 -
Linux common clock framework(3)_实现逻辑分析
转自http://www.wowotech.net/pm_subsystem/clock_framework_core.html1. 前言前面两篇clock framework的分析文章,分别从clock consumer和clock provider的角度,介绍了Linux kernel怎么管理系统的clock资源,以及device driver怎么使用clock资源。本文将深入转载 2017-07-04 09:47:22 · 307 阅读 · 0 评论 -
Common Clock Framework系统结构
转自http://www.wowotech.net/pm_subsystem/ccf-arch.html一、前言之前,wowo同学已经发表了关于CCF(Common Clock Framework)的三份文档,相信大家对CCF有一定的了解了,本文就是在阅读那三份文档的基础上,针对Linux 4.4.6内核的内核代码实现,记录自己对CCF的理解,并对CCF进行系统结构层面的归纳和整理转载 2017-07-04 09:49:43 · 305 阅读 · 0 评论 -
制作jffs2根文件系统
安装制作工具mkfs.jffs2sudo apt-get install mtd-utils假设根文件系统文件在rootfs目录下,则使用下面命令制作文件系统imag:mkfs.jffs2 -r rootfs -o rootfs.jffs2 -p -l -n -e 0x10000 (0x10000=64KB) -r rootfs 是指定根文件系统文件所原创 2017-07-13 10:38:55 · 496 阅读 · 0 评论 -
u-boot从内存启动命令 bootz
bootz命令用来从内存启动zImage文件例如tftp 0x8000 zImage 将内核下载到0x8000位置tftp 0x100 test.dtb 将设备树下载到0x100位置bootz 0x8000 - 0x100 则可以启动系统 注意减号前后有空格原创 2017-07-13 10:42:10 · 3851 阅读 · 0 评论 -
Linux时间子系统之:软件架构
转自http://www.wowotech.net/timer_subsystem/time-subsyste-architecture.html一、前言本文的主要内容是描述内核时间子系统的软件框架。首先介绍了从旧的时间子系统迁移到新的时间子系统的源由,介绍新的时间子系统的优势。第三章汇整了时间子系统的相关文件以及内核配置。最后描述各种内核配置下的时间子系统的数据流和控制流。转载 2017-07-04 10:16:40 · 579 阅读 · 0 评论 -
Ubuntu Server 16.04修改IP、DNS、hosts
转自:http://www.cnblogs.com/pcat/p/6098157.html1. Ubuntu Server 16.04修改IPsudo vi /etc/network/interfaces回显:# The loopback network interfaceauto loiface lo inet loopback# The primary转载 2017-10-26 14:34:42 · 3278 阅读 · 0 评论