
嵌入式linux
tea1896
这个作者很懒,什么都没留下…
展开
-
ARM裸奔程序如何调用库函数
转自韦东山 嵌入式linux应用开发完全手册1. 在当前目下建立文件夹为include 和lib 分别放置头文件和实现文件include : ctype.h* gcclib.h* kernel.h* stdio.h* string.h* system.h* types.h*lib: ctype.c* div64.S* Makefile* print转载 2012-09-26 16:10:17 · 1713 阅读 · 0 评论 -
popen + top 获取系统信息
想实时监视系统信息,用popen+ top 完成。 发现代码在ubuntu下运行正常,而在arm上一运行,就挂死了。 而运行ls则不会挂死,比较两个的不同,发现ls是运行一次,而top是一直运行的。 于是修改top命令,改为只执行一次,得到解决。 /* 获得SOC负载信息 */ TopFP = popen("top -n 1", "r"); i原创 2016-05-31 08:45:51 · 1796 阅读 · 0 评论 -
linux 线程同步
多线程之间的同步方式有以下几种选择:1.通过互斥锁实现。int pthread_mutex_init(pthread_mutex_t *mp, const pthread_mutexattr_t *mattr)int pthread_mutex_lock(pthread_mutex_t *mutex); #include pthread_mutex_t mutex; int原创 2016-05-31 09:25:17 · 302 阅读 · 0 评论 -
内核和用户空间的消息传递-异步通知 (1)
背景: 当内核空间的驱动收发数据需要通知用户空间时,有以下几种方法:1.异步通知机制:/* 异步信号处理函数 */ signal(SIGIO, logic_PCMHandler); /* 设置驱动绑定对应的异步通知发生器 */ encoder_index = m31_GetEncodeIndex(); logic_SetDeviceIndex(encoder_原创 2016-06-01 09:15:55 · 2201 阅读 · 0 评论 -
内核和用户空间的消息传递-事件通知 (2)
事件通知机制不仅可用户用户态两个线程之间同步,还可以用于内核空间和用户空间同步。方法如下:1.在用户层a. 创建一个文件描述符int event_fdevent_fd = eventfd ( 0, EFD_NONBLOCK | EFD_SEMAPHORE );b.将文件描述符通过ioctl传递给内核 enable_message_notifica原创 2016-06-01 09:56:07 · 4387 阅读 · 0 评论 -
内核和用户空间的消息传递-netlink (3)
未做实验,待补充。参考: http://blog.youkuaiyun.com/daydring/article/details/24000081原创 2016-06-01 09:57:17 · 519 阅读 · 0 评论 -
zynq u-boot配置
以前我们需要修改u-boot的默认串口,是修改配置文件。比如: dadi@wellav:~/dadi/hevc_workspace/kernel/u-boot-xlnx-xilinx-v2014.4$ cat include/configs/zynq_zed.h /* * (C) Copyright 2013 Xilinx, Inc. * * Configuration for原创 2016-06-23 09:26:55 · 3740 阅读 · 0 评论 -
i2c 和 spi 单次传输大小
在各种协议中,单次传输长度一般都有限制。 关于SPI的长度可以参考下边邮件。 I2C的长度现在大家在linux驱动模型中也能找到限制。在/drivers/i2c/i2c-dev.c 中参考代码:i2cdev_read / i2cdev_write / i2cdev_ioctl_rdrw 中都有限制如下: /* Limi原创 2016-06-23 10:08:54 · 2916 阅读 · 0 评论 -
linux下I2C的读写
1.在linux下提供另种I2C读写方式: a. 一种是带寄存器读写的方式。(因为很多I2C设备的操作都是读写寄存器,所以Linux提供了这样一种接口) b.一种是纯粹的数据发送。(a实际上调用的是b来实现)a.方式的实现:以下这个结构体,定义在#include 中, 里边有command参数,也就是寄存器地址。//定义结构体struct i2c原创 2016-06-23 12:13:54 · 11320 阅读 · 1 评论 -
记录
Linux使用KILL 0检测进程是否存在转载 2017-06-03 16:00:18 · 251 阅读 · 0 评论 -
Linux 内核的I2C设备
http://note.youdao.com/noteshare?id=bb13c91ab89032f1cbb1cb5fe4bf56a4&sub=653D18BF2BFB46A7895E18BB1B5226E9原创 2017-08-03 19:49:17 · 556 阅读 · 1 评论 -
zynq ramdisk空间不够解决办法
1.zynq经常需要用到ramdisk,当我们添加东西时有时会空间不够,解决办法如下:制作ramdisk会用到如下语句:dd if=/dev/zero of=ramdisk32M.image bs=1024 count=32768将那个count的数值加大就可以了,具体多大,自己试验吧。原创 2013-11-17 17:04:29 · 1663 阅读 · 0 评论 -
VMWARE下 ubuntu不能unity的解决
1.先再装vmware-tools2.再安装ubuntu 2D classic (No effects) http://blog.youkuaiyun.com/sxsj333/article/details/8695124转载 2013-10-26 19:55:54 · 1114 阅读 · 0 评论 -
ARM中断返回时间过长的问题(.lds文件)
1.第一段.lds SECTIONS{ first 0x00000000 : { head.oinit.o nand.o} second 0x30000000 : AT(2048) {main.o delay.o } }返回时间过长的原因: Main代码放在2048,运行在0x30000000(即原创 2012-09-28 10:32:09 · 622 阅读 · 0 评论 -
ARM 中断的写法
//如一下代码所示,不能用2个if 代替这个两个else if,也不能用switch,因为最多四个参数寄存器,编译器会给switch类型的语法,每个情况分配一个寄存器,即使不带参数,也会出现中断不能响应的问题,所以用if..else if ...else if 代替switch 和 单个的if 语句. (连蒙带猜,不准,如有谁知道具体,请留言)#include "s3c24xx.h"voi原创 2012-09-28 21:01:02 · 656 阅读 · 0 评论 -
ARM 2410 可执行文件的函数入口问题
1.先看启动代码:.text.global _start_start:ldr sp, =4096bl disable_watch_dogbl memsetupbl copy_2th_to_sdrambl create_page_tablebl mmu_initldr sp, =0xB4000000ldr pc, =0xB0004000 /原创 2012-09-27 22:32:49 · 522 阅读 · 0 评论 -
ARM 2410 A/D转换的启动问题
int main(void){unsigned int value;uart0_init();ADCCON &= ~(0x7ADCCON = 1ADCTSC &= ~(1printf("\n\rstart ad conversion!\n\r");ADCDAT0 = ADCDAT0; //读数据启动转换,如果没有这个读操作,后边A/D转换将不能启动w原创 2012-09-26 11:49:05 · 816 阅读 · 0 评论 -
ARM 驱动一些小结
1.各子系统都是由各部分组合而成,使用前,记得把内核那部分编译进内核。2. 平台设备驱动struct platform_device led_dev= {.name = "s3c2410-led",.id = -1,.num_resources = ARRAY_SIZE(led_resource),.resource = led_resource,.dev原创 2012-10-23 10:32:17 · 409 阅读 · 0 评论 -
ARM 初始化SDRAM破坏NANDFLASH的原因
SDRAM 初始化程序如下:memsetup:adrl r0, mem_cfg_val //1. 这条指令必须用adrl,不能用ldr,不然nand会死掉,只能通过norflash来复原 2.原因:nand的0地址将被破坏,强制檫除才能使用3.adrl是一条位置无关指令(类同bl / b / mov),而ldr是一条位置相关指令,当我们的启动代码,限定原创 2012-09-26 19:18:42 · 600 阅读 · 0 评论 -
字符设备驱动加载后变成块设备的原因分析
引子:内核 : 2.6.38 (arm-unknown-linux-gnueabi-)编译文件系统: busybox 制作,用 (arm-linux-gnu-)编译,lib库也拷贝自(arm-linux-gnu-)驱动: 用(arm-linux-gnu) 编译结果:标准输入子系统驱动加载后,产生的/dev/event0 为块设备原因:1.内核和文件系统最好都用原创 2013-01-29 21:28:38 · 405 阅读 · 1 评论 -
一些平常的小问题(持续加载中)
1.解压文件出现错误:tar: linux-3.7.5/arch/microblaze: Directory renamedbefore its status could be extracted原因:这个文件是windows和ubuntu虚拟机共享的,而windows并不支持符号链接解决:把这个文件移到ubuntu内部解压。原创 2013-01-31 11:13:02 · 2248 阅读 · 0 评论 -
PCM1864 调试
优快云 的图片编辑功能太扯淡了,十分不方便,现在文章都只能保存到有道云了。PCM1864 调试链接原创 2017-09-02 11:35:53 · 1569 阅读 · 0 评论