加载中…
个人资料
修海
修海
  • 博客等级:
  • 博客积分:0
  • 博客访问:40,934
  • 关注人气:116
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
访客
加载中…
好友
加载中…
评论
加载中…
留言
加载中…
博文
标签:

转载

分类: 单片机
不错
关于自平衡小车制作的问题,其实这在飞思卡尔智能车比赛的时候,清华的卓晴老师的那篇文档里面说的很清楚,很多没参加比赛的人不知道或者不重视这个文档,我用自己的理解来写一个总结希望对大家有帮助,大神勿拍砖。

 

阅读  ┆ 评论  ┆ 转载原文 ┆ 收藏 
标签:

嵌入式

it

1、/arch/arm/mach-omap2/board-am335xevm.c/lcdc_init(){得到LCD硬件参数struct da8xx_lcdc_platform_data} -> am33xx_register_lcdc() -> omap_device_build() ->  omap_device_build_ss() -> platform_device_add_data(){pdev->dev.platform_data = d}
 
2、platform_device端注册过程:
omap_device_build_ss(){pdev = platform_device_alloc(pdev_name, pdev_id);} -> omap_device_register() -> platform_device_add()
 
3、platform_device设备名确定过程:
am33xx_register_lcdc(){char *dev_name = 'da8xx_lcdc';} -> omap_device_build() -> omap_device_build_ss(){pdev = platform_device_alloc(pdev_name, pdev_id);}
 
4、通过设备名搜索找到设备驱动文件: drivers/video/da8xx-fb.c
 
5、board-am335xevm.c记录的屏的类型有:
.type    = 'TFC_S9700RTWV35TR_01B',
.type   = 'NHD-4.3-ATXI#-T-1',
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: Linux设备驱动
1、创建设备类,是为了让mdev知道根据这些信息来创建设备节点,根据/sys来创建,所以从devfs开始,根文件系统就引入了一个/sys目录,/sys/dev下面都是内核加载的驱动的主从设备号
 
2、class的初始化过程(在/sys/下创建class目录):
start_kernel() -> rest_init() -> kernel_init() -> do_basic_setup() -> driver_init() -> classes_init()
 
3、所谓的uevent机制,就是由内核来启动一个用户进程
 
4、uevent通知机制:kobject_uevent() -> kobject_uevent_env()
    11.1、得到kset->uevent_ops,通过filter判断kset中的内核对象状态改变是否需要通知到用户层,返回0就不通知
    11.2、如果内核对象状态变化需要通知用户层,分配环境变量空间env,并设置环境变量
    11.3、内核来启动一个用户空间的程序,一般默认为这个属性文件(/proc/sys/kernel/hotplug)指定的进程,如:/sbin/mdev
 
5、在x86系统下,用户
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

嵌入式

it

分类: 嵌入式技术专题
    很多时候对nand的操作都是通过主控的nand控制器直接完成,或者更多时候是通过MTD标准操作接口完成读写擦的过程,然而有些细节问题有必要在这里讨论一下,我分为以下几点进行说明:



1、擦除过程:擦除过程是将0变成1的过程,即充电的过程(比
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

嵌入式

分类: 嵌入式技术专题
    PWM输出时的Dead Zone(死区)作用是在电平翻转时插入一个时间间隔,避免关闭前一个设备和打开后一个设备时因为开关速度的问题出现同时开启状态而增加负荷的情况(在没有彻底关闭前打开了后一个设备),尤其是电流过大时容易造成短路等损坏设备,如:互补PWM波输出在逆变器(直流转交流)中的应用。
 
    PWM(Pulse Width Modulation),即脉宽调制,简单来说就是一些矩形脉冲波形,PWM波形最重要的参数是频率和占空比。PWM是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量、通信、功率控制与信号变换的许多领域中。
    更具体的理解是,通常大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。每个桥的上半桥和下半桥是绝对不能同时导通的,但高速的PWM驱动信号在达到功率元件的控制端时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2013-07-20 22:50)
标签:

嵌入式

it

分类: Bootloader
1、三个函数加一个结构体采用链表的思想实现内存动态申请和释放:
1)、内存初始化函数:heap_init()
2)、内存申请函数:mmalloc()
3)、内存释放函数:mfree()
4)、结构体:
typedef struct blockhead_t {
Int32 signature; //固定为这个宏 BLOCKHEAD_SIGNATURE
Bool allocated; //此区域是否已分配出去(0-N,1-Y)
unsigned long size; //剩下内存区域大小
struct blockhead_t *next; //链表后指针
struct blockhead_t *prev; //链表前指针
} blockhead;
5)、结构体就是链表的节点,代表一块分配的内存空间,所分配的内存按8字节对齐(自己也可以改),这是引导程序vivi中的代码,vivi已遗失多年,还是把这些可参考学习的东西留下吧。
2、实现原理如图:
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

    一天一位行者来到一个寺庙里,拿出三个柱子,第一个有64个盘子,从上往下盘子越来越大,要求庙里的老和尚把这64个盘子全部移动到第三个柱子上,且在移动过程中,任何一个柱子始终保持小盘子在大盘子上面,而且每次只能移动一个。
说完后众生皆一片茫然,此时一位扫地僧法号——基特,钻了出来,冷冷一笑,不屑的说道,我佛慈悲,普渡众生,法海无边,请问施主你可知我寺有多少僧吕,施主摇了摇头说,我无从得知,基特哈哈一笑道:其实只有两个,一是已渡之人,一则尚未渡化,说完后继续扫地。



其实这位扫地僧已经揭晓了答案,那就是,无论多少个盘子,其实可以看成只有两个,也就是n和n-1,即复杂的问题简单化,接下来分析,假设三个柱子分别是A、B、C,目的是将A座上的盘子全部

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

转载

分类: 人文
没有付出那来收获!

昨天看到虎嗅一篇关于Google退出中国三周年祭的文章,很想写一篇关于谷歌的东西,而当我打开Google首页,其Logo变成了蛋糕和蜡烛的图案,而当我鼠标悬停

阅读  ┆ 评论  ┆ 转载原文 ┆ 收藏 
unsigned int i = 8;
int main()
{
i = i<<3;//输出结果i = 64
}
上面的变量i是采用逻辑移位还是算术移位呢?
逻辑移位,简单理解就是物理上按位进行的左右移动,两头用0进行补充,不关心数值的符号问题
算术移位,同样也是物理上按位进行的左右移动,两头用0进行补充,但必须确保符号位不改变

但我们好奇的是“i<<3”和“i>>3”到底采用的是算术还是逻辑移位呢?其实单从C语言本身来看可能没有太多突破,因为C最终会被编译器编译成目标平台的汇编代码,所以必须要结合编译器和汇编程序来分析以上代码,下面主要从反汇编入手分析,对ARM平台下有关移位的指令有:
LSL(逻辑左移)
LSR(逻辑右移)
ROR(循环右移)

ASL(算术左移)
ASR(算术右移)
RRX(带扩展的循环右移)

下面我们来看看上面那段C程序的反汇编结果:
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 嵌入式技术专题

    基于上一遍《纯C语言实现Bootloader》待续部分,能让不是很懂ARM体系结构和汇编的人也能完全看懂Bootloader,写完已经半个多月了,由于工作比较忙一直没上传,网上这方面这方面资料很少,希望能给喜欢嵌入式的朋友有所帮助。这次加入的是Cortex-A8 s5pv210自制Bootloader,与s3c2440不同的是链接脚本要有所改动,否则无法实现纯C语言版,如果内嵌一段汇编,那么问题将变的更简单些,这里我在链接脚本里多加入了一个自定义段 .boot_data,链接脚本如下:

SECTIONS

{
  . = 0x33e00000;
  .boot_data ALIGN(4) : { *(.data) }
  . = 0x33e00010;
  .text :
   {
      arch/s5pv210.o(.text)
      *(.text)
   }
  .data ALIGN(4) : { *(.data) }
  .rodata ALIGN(4) : { *(.rodata) }
  .bs

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有