- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 sja1000 CAN控制器波特率计算方法详解
这段时间调试公司处理器can总线,实现最基本的对发实验,can控制器是sja1000,起初因为是对发实验,同样2块开发板,同样内核配置相同,因此时钟以及波特率肯定一样,也没有仔细研究can的时钟以及波特率,今天有客户问can控制器的时钟以及波特率,下午仔细看了一下sja1000手册,并且写了一个由波特率和时钟来计算分频值的小程序,这里总结一下。 sja1000 can工作频率和波特率之间分频
2013-05-16 23:35:52 5682 2
转载 linux下/dev/mem分析
dev/mem: 物理内存的全镜像。可以用来访问物理内存。/dev/kmem: kernel看到的虚拟内存的全镜像。可以用来访问kernel的内容。/dev/mem 用来访问物理IO设备,比如X用来访问显卡的物理内存,或嵌入式中访问GPIO。用法一般就是open,然后mmap,接着可以使用map之后的地址来访问物理内存。这其实就是实现用户空间驱动的一种方法。/dev/kmem 一般
2013-05-15 15:22:08 16854
转载 insmod: error inserting : -1 Invalid module format 解决办法
当最初开始LDD编程时,经常会碰到这种情况,下载编译的内核源代码和当前正在运行的内核不一样。 第一阶段有时候你下载的内核版本相对正确,但却仍然不能insert成功,这有另一方面的东西要check:1. gcc的版本,比较:cat /proc/version和gcc -v2. 内核config的比较,在关键的选项上不能相左当前内核config:/lib/modules
2013-05-14 17:17:40 2335
转载 linux内核函数do_div与undefined reference to `__udivdi3'解决方法
【问题】编译Linux下面的代码,经常会遇到这种错误:undefined reference to `__udivdi3'【解决过程】之前遇到过几次了,都是类似的原因导致此问题的。后来才了解,其根本原因:嵌入式中,32位系统中(目前多数系统都是,比如ARM的片子),对于普通的a除以b(b为32位):(1)当a为32位,Linux 内核中,常用uint
2013-05-08 22:31:52 1757
原创 mmap底层驱动实现方法总结
最近在调试视频卡,虽然通了,但是公司CPU主频在300MHZ,对于采集D1格式图像显示到fb中并不是很流畅,分析原因,视频采集卡是PCI插槽,PCI的带宽没有问题,有一个想法,视频卡做DMA将采集到的图像放到内存中,CPU将图像再搬运到framebuffer中,这是视频采集的大体流程,在这个过程中最费CPU的是数据的搬运,在我自己写的小测试程序中就是循环的拷贝从videobuf到framebuff
2013-05-05 11:41:09 3297
原创 ubuntu12.04修复grub方法
五一假期不知道出了什么原因,自己笔记本上的windows7启动不起来了,我的笔记本上装的是双系统,ubuntu还可以正常启动,所以就打算重新装一下win7.重装win7之后发现启动后直接引导进入win7,没有了grub引导选择操作系统,这个原因很简单,就是win7安装过程中覆盖了MBR,将原先MBR中的grub覆盖了,所以需要将grub修复。现在总结一下方法如下首先做一个ubuntu的启动盘,
2013-05-02 09:37:12 1669
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人