自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 liinux中lds链接脚本中定义的变量理解

链接脚本中定义的符号(symbol)也可以认为是全局变量,在C代码和汇编代码都可以访问它。链接脚本定义的符号(变量)时代表一个地址。下面根据u-boot中情形分两种情况讨论:OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")OUTPUT_ARCH(arm)ENTRY(_start)SE

2020-04-06 19:00:43 1000 1

原创 手动为zynq mpsoc交叉编译dfu-utils工具

1)首先创建一个目录:mkdir dfu-util-cross2)下载源码包:http://sourceforge.net/projects/libusb/files/ 下载libusb-1.0.20.tar.bz2  http://dfu-util.sourceforge.net/releases/ 下载dfu-util-0.9.tar.gz3)解压两个包:

2018-01-09 19:42:35 1456

原创 GIC使用注意事项

一:GIC的原理:GIC最大支持8个cpu interface,对于0-31号中断每个CPU interface都是私有的。SPI中断(32-1019)会经过distributor转发给各cpu interface,ditributor和cpu interface都是基于内存地址映射的方式访问。distributor的地址是各CPU共享的,cpu interface的地址是每个CPU

2015-01-05 19:19:30 2869

原创 USB HID设备驱动加载过程

本文以linux-3.12内核来分析usb键盘插入系统后系统如何识别usb键盘的过程。内核选项配置CONFIG_HID,CONFIG_USB_HID,CONFIG_HID_GENERIC,但是没有配置CONFIG_USB_KBD,CONFIG_USB_MOUSE选项。  1)在内核启动时,注册了hid总线驱动,在drivers/hid/hid-core.c中   hid_init---->

2014-12-30 18:04:07 7942

原创 实现可变参数函数字符串的格式简单解析样例

void my_func(const char *s,...){  char *p, *prev = (char *)s;  char *peer, *i;  int   for_int = -1;  double for_double = 0.0;  int skip = 0;    va_list v;  va_start(v, s);    whi

2014-10-23 18:34:32 706

原创 alsa驱动心得

主要分三部分:cpu_dai  machine(

2014-10-20 15:02:44 6029 1

原创 git永久删除文件

我们把开发板的完整tf镜像也要上传的github

2014-08-04 16:23:51 777

原创 用shell脚本读取gpio按键的对应的eventx

#/bin/bashline=$(cat ./input.txt | grep -n "gpio-keys" | awk -F: '{print $1}')echo $lineline=$(($line + 3))echo $linecat ./input.txt | sed -n ''$line'p' |awk '{print $3}'cat ./input.txt |

2014-06-06 16:35:36 2985

原创 嵌入式ubuntu自动登入

getty --help编辑/etc/inittab文件,修改getty选项。

2014-05-20 17:35:25 1150

原创 在进程中用户态地址如何得到物理地址

在3.9内核里drivers/staging/tidspbridge/core/tiomap3430.c中发现一个有意思的函数:/* *  ======== user_va2_pa ======== *  Purpose: *      This function walks through the page tables to convert a userland *

2014-05-14 15:10:52 1908

原创 usb

usb 信号:VBUS, GND, D+,D-,ID共5根线。usb分为插座和插头两种。图1 A型插座图2 A型插头图3 mini 插头图4 micro 插头 standard:标准mini:micro:最扁的那种mini插头转A型插座(AF)转接线:ID引脚是接地的mini插头转A型插头(AM)转接线:ID引脚是悬空的

2014-05-14 14:23:18 1406

原创 分析三星的uboot中的fdisk功能

MBR的分区表有4个,每个分区表长度为16个字节。CHS mode表示Cylinder/ Head/Sector,由于硬盘可能有多块盘片组成,每个盘片正面和反面都可以存数据,所以每个盘片正面和反面各有一个磁头,每个盘片的一面都是有一些同心圆组成,这些同心圆就是磁道,不同盘片上的相同位置的同心圆(磁道)应该在一个圆柱体的表面,称为柱面,同时每个磁道又会切分成多个扇区,一般扇区的大小为512个字节

2014-05-14 14:20:57 1188

原创 shell命令备忘

1)获取/dev下面的所有磁盘节点

2014-05-14 14:19:36 490

原创 linux内核堆栈设置过程

内核在没有开启MMU之前,内核堆栈的设置在arch/arm/boot/

2014-05-07 18:30:16 2748

原创 ARM linux下memtester交叉编译

我们在自己的新开发的板子上测试DDR稳定性很必要,尽管uboot下可以用mtest测试DDR,但是由于uboot一般不使能cache,测试不完全,一旦开cache,DDR会出现burst传输。  linux的内存测试工具memtester,为了测试ARM板子的DDR的稳定性,需要移植memtester我们的arm板子上,它的移植比较简单。  我们可以从http://pyropus.ca/s

2014-04-03 14:05:42 8762

原创 linux下的二进制工具

hexdump -C -v xxx.bin   xxd -g1 xxx.bin    表示以1个字节为分组,默认是2个字节分组,-g0表示以位的形式分组。

2014-03-20 11:43:29 525

原创 魔法键sysrq

1)在串口终端中,我们可以发送一个break,串口驱动收到这个break后(所以需要串口驱动支持的),会触发魔法键。如何发送break?ctrl + break键,然后敲回车,会出现帮助。后面调用命令时:按下ctrl + break  松开,再按对应的命令码比如l,就会打印堆栈信息。2)另外可以使用proc文件系统接口来触发对应的功能,比如echo t > /proc/sysrq-trigge

2014-03-20 10:36:20 905

原创 使用内核中更新mtd分区表方法以及查看和修改环境变量(fw_setenv)

这个工具是uboot中提供的,需要把它交叉编译一下放到文件系统中,交叉编译方法: make ARCH=arm  CROSS_COMPILE=arm-linux-gnueabihf-  HOSTCC=arm-linux-gnueabihf-gcc  HOSTSTRIP=arm-linux-gnueabihf-strip  env 然后把内核里的mtd分区表信息改成自己想要的,在新

2014-03-06 15:51:18 7455

原创 uboot中ramdisk启动linux的两种方法

第1种:setenv ramdiskimage 'ramdisk.gz.uboot'setenv ramdiskaddr '0x2000000'setenv ramload 'tftp ${loadaddr} ${bootimage};tftp ${ramdiskaddr} ${ramdiskimage}; tftp ${fdtaddr} ${fdtimage}'setenv ra

2014-03-06 15:03:34 7110

原创 uboot如何设置nfs的启动参数

在uboot中设置环境变量:setenv nfsroot "/dev/nfs"setenv nfsip  "192.192.192.201"setenv nfsdir  "/home/xuewt/share/yocto/build/tmp/work/socfpga_cyclone5-poky-linux-gnueabi/altera-image-1.0-r0/rootfs"sete

2014-03-06 14:59:56 3320

原创 查找一个字符串中最大重复子串(C语言版)

#include #include /* 找出一个字符串最大相同子串,如果有多个重复子串,则要求返回最后一个位置的子串*/void print_sub(char *p, int len){ int save_len = len; while(len && len--) {  printf("%c ", *p++); } printf("(%d bytes

2014-01-14 17:38:48 6437

翻译 求一个数的临近的较大的2的整数次幂

偶然看到云风的http://blog.codingnow.com/2011/12/buddy_memory_allocation.html 代码,发现了一个比较巧妙的实现。 static inline intis_pow_of_2(uint32_t x) { return !(x & (x-1));}static inline uint32_tnext_pow_of_2

2013-12-31 15:50:57 1555

原创 结合2012.10版本的u-boot分析SD卡驱动(笔记)

xxx_mmc_init流程:|power up sd_card|给卡上电        |       \|/|reset controller/fifo/dma|执行控制器复位/fifo复位        |       \|/|清除所有状态寄存器|实际是复位硬件的状态机        |       \|/|屏蔽中断寄存器| 比如设置中断掩码及使能寄存

2013-12-25 11:38:35 2281

原创 arm的2级页表在Linux内核创建过程解析

系统DDR的基地址为0x0,内存为1GB,所以TTB的基地址为0x4000。下面要创建虚拟地址0xfe700000到物理地址0xffff0000之间的映射,映射大小为64KB,即16页。由于物理地址不是1MB字节对齐,所以必须创建两级映射。  用户空间/内核空间划分为2G/2G。  create_mapping:pgd = 0x80007f98, addr = 0xfe700000,

2013-11-14 15:32:30 1251

原创 3.10内核中使用dtb的ramdisk启动方法

内核配置如下:     1) General setup-->[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support                           [*]   Support initial ramdisks compressed using gzip

2013-10-09 17:21:00 908

原创 C语言引用汇编代码里的全局标号或变量

在内核的include/linux/linkage.h中定义了:#ifndef ENTRY#define ENTRY(name) \  .globl name; \  ALIGN; \  name:#endif#endif /* LINKER_SCRIPT */ 在arch/arm/mach-socfpga/headsmp.S 中定义了一下两个全局变量:

2013-10-09 16:02:53 3394

原创 嵌入式系统如何安装内核模块

在内核源码目录下输入make help,这里就有帮助:当我们把SD卡的ext3分区通过读卡器挂载到主机下面,比如/media/xxxxx。make ARCH=arm CROSS_COMPILE=arm-linux- modulesmake ARCH=arm CROSS_COMPILE=arm-linux- modules_install INSTALL_MOD_PATH=/me

2013-07-29 20:47:55 855

原创 wpa_supplicant和openssl移植

在ubuntu10.04下移植,下面记录过程。版本:wpa_supplicant-2.0.tar.gz           openssl-1.0.1e编译器:linaro - arm-linux-gcc-4.7.3备注:经过测试发现openssl-0.9.8e + wpa_supplicant-0.7.3 or wpa_supplicant-2.0 连接时会出错:>

2013-07-29 20:39:38 2889

原创 最新的linux内核启动时保留一段连续物理内存方法

MACHINE_START.reserve = xxx_reserve,MACHINE_ENDstatic void __init xxx_reserve(void){memblock_free(phy_address_base, size);memblock_remove(phy_address_base, size);}

2013-07-29 20:21:43 1446

原创 u-boot常用编译选项

-isystem path  指定系统的头文件,U-boot指定的是编译器的头文件在host主机运行 arm-linux-gnueabihf-gcc --print-file-name=include 命令会打印出当前交叉编译器的头文件路径/opt/altera-linux/linaro/gcc-linaro-arm-linux-gnueabihf-4.7-2012.11-20121123

2013-07-29 20:17:32 1678

image2lcd bmp转RGB

LCD开发必不可少,含注册码,版本较新,欢迎大家下载啊。驱动开发必备。

2013-05-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除