第一篇:i2c_rtc_rx8025驱动总结
ARM : at91-sam9x5ek Linux内核:linux-2.6.39 时钟芯片:rx8025 SA/NB
第一种方法:
Rx8025驱动程序在该linux内核中已经包含,路径为:drivers/rtc/rtc-rx8025.c 所以在内核中增加驱动只需要配置即可:
1.执行make ARCH=arm menuconfig 进入菜单选项,选择RTC配置,选中EPSON RX-8025SA/NB,同时一定要去掉cpu自带的时钟。
2.i2c support 需要选中I2C Hardware Bus support中GPIO-based bitbanging I2C,否则,即使rtc驱动正确,也不能使用,提示:drivers/rtc/hctosys.c: unable to open rtc device(rtc0)。问题源自,驱动配置正确,I2C驱动没有加载正确,udevd不能创建rtc0设备节点
3.在arch/arm/mach-at91/board-sam9x5ek.c中添加信息,注意此处的name名称要与驱动程序中id_table中的名称保持一致。
而在linux某些匹配机制中,设备名称是与驱动名称相一致。如果名称不能正确匹配,系统是不会执行probe函数的。
另外需要注意的是i2c地址,手册上给出的地址一般都是带有读写位的,而程序中的地址需要把最后一位的读写位去掉,取前面的7位。Rx8025的地址为0x64,相应的程序中的地址应该为0x32。否则会提示对寄存器的操作失败。
4.驱动正确配置后,生成相应的文件 /dev/i2c-0 /dev/rtc0 /sys/bus/i2c/drivers/rtc-rx8025 /sys/bus/i2c/drivers/0-0032
第二篇:MTK手机驱动总结
MTK手机驱动培训资料
1、LCD的调试:
一般LCD厂商在提供样品的时候,都会提供给初始化代码,服务更好的还会提供进入和退出SLEEP的代码,如果厂商不提供的话,就只有看着文档自己写了。我们的工作一般是调节显示效果以及和厂商沟通,还有就是把厂商给的代码整合进程序里面去。Lcd驱动程序相关的文件主要包括lcd.c,lcd_sw.h以及lcd_sw_inc.h。
调节LCD的驱动程序,最先要在lcd_sw_inc.h中修改lcd的尺寸,就是LCD_WIDTH和LCD_HEIGHT,如果有小屏的话还要定义下面的小屏的lcd的尺寸。
然后,根据硬件的设计修改lcd_sw.h中的宏,来确定lcd是使用8位的还是16位的接口,比如使用16位的lcd接口,就定义宏MAIN_LCD_16BIT_MODE。
最后,移植厂商给的初始化代码进入到初始化函数里,还有进入和退出Sleep状态。进入和退出Sleep状态要求重新进入Sleep状态后屏幕能正常的显示,退出Sleep状态要求LCD的耗电小于0.1ma。
如果是CSTN的屏幕,那么还有一个对比度的参数需要设定。有2个对比度的值,一个是在初始化函数中写进去的一个值,还有一个是在nvram_user_config.c中的结构NVRAM_EF_CUST_HW_LEVEL_TBL_DEFAULT中定义。
2、GPIO的设定:
GPIO就是General purpose IO pin的意思,是一些能用做一般的功能控制的IO引脚。MTK芯片的引脚一般有四个功能选项,可以通过寄存器来控制各个引脚的功能,一般功能0就是表示这个引脚用做GPIO。
用函数void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)来控制GPIO的功能,pin表示引脚号,conf_dada控制引脚的功能。
用函数void GPIO_InitIO(char direction, char port)控制GPIO的方向,port表示引脚号,direction表示是输入还是输出。
用函数void GPO_WriteIO(char data,char port)控制GPIO的输出值,port表示引脚号,data表示输出的是高电平还是低电平。
在文件custom_equipment.c中有一个结构GPIO_MAP_ENTRY gpio_map_tbl[],其中定义了控制震动的GPIO,应该根据原理图来更改第4项震动的GPIO的设定。
3、信号量的控制:
信号量指的是在手机信号的强弱。通过修改SimDetectionDef.h中的SIGNAL_STRENGTH_NONE到SIGNAL_STRENGTH_LEVEL4的值来修改在不同信号下手机显示的信号格数。默认满格信号显示是4格,如果是其他的,比如5格的话,还要修改程序NetworkFunctions.c中的函数void NetWorkSignalLevelIndication(void *inMsg)。
4、电池格数的控制:
在bb中有一个ad转换的部件,每隔一定时间采样电池的电压,来控制电池显示的格数。具体在什么电压显示几格在文件nvram_user_config.c中的结构
NVRAM_EF_CUST_HW_LEVEL_TBL_DEFAULT中定义。计算的算法在custom_equipment.c中的kal_uint8 custom_cfg_vbat_level_regulator(kal_uint32
measure_voltage, kal_uint8 *last_level, kal_uint8 *disp_level, kal_uint8 *hit_count)中。
5、lcd背光的控制:
一般lCD的背光是通过控制PWM1的占空比来实现,背光的级别一般有5级,在每一级别的占空比是由custom_hw_default.c文件中的kal_uint32
PWM1_Level_Info[PWM_MAX_LEVEL][2] 来控制,控制的实现在pwm.c中的函数void PWM_level(kal_uint8 level)中。
6、键盘背光的控制
键盘的背光由pwm2来控制,一般很少改动。键盘的背光是否亮起来可以作为判断一个机器是否开机的一个标志,一般板子做好后,只要cpu和flash以及pmic连好后就可以正常开机了,这时lcd可能没显示,可是键盘灯一定会亮的。
7、usb和充电器的区分:
一般在mtk平台下usb和充电器是提供一样的电源,使用同一个接口,判断是否是usb还是充电器是通过判断usb的d+线上是否为低来判断的,因为在计算机上这根线是被拉低的,如果插入的是usb,这个线就会被拉低,如果插入的是充电器,因为充电器没有接这个线,所有它被手机内部的一个很大的电阻给拉高,通过检测这个线上的电压就可以判断插入的是usb还是充电器,具体的判断的算法在Bmt_main.c文件中的static void check_charger_or_usb(kal_uint8 sche_id)中。
8、键盘的定义:
在文件keypad_def.c中根据原理图修改数组const keypad_structkeypad_custom_def就可以了。
9、音频参数的修改:
根据硬件提供的用仪器测出来的值修改nvram_default_audio.c中的宏定义值。
10、外部中断的设定:
在文件eint_def.c中修改所使用的外部中断的号,比如USB_EINT_NO等。
11、待机电流控制:
一般要求手机的待机电流小于3ma,最小电流小于1ma,好的情况下能做到小于0.5ma,关机电流小于0.1ma。关机电流大一般是纯硬件问题,因为这时bb已经没有电了,软件完全不工作。待机电流大一般是lcd没有进入休眠、image sensor没有进入休眠或者cpu没有进入休眠。Cpu没有进入休眠一般是一直有个程序在工作,比如一个定时器一直工作或者一直来一个中断信号等。
12、image sensor的控制:
一般选用mtk推荐的image sensor的型号,这样在make文件中定义了型号以后就直接可以用了,需要注意的是i2c总线的定义,在sccb.h中定义,修改SCCB_SERIAL_CLK_PIN和SCCB_SERIAL_DATA_PIN的值到现在所用的gpio引脚,如果有多个i2c的设备的话
就得修改程序了,默认的只支持一个i2c设备。image sensor的的驱动程序在image_sensor.c中。
13、FM芯片的控制:
一般选用mtk提供的fm芯片,在这样在make文件中定义了型号以后就直接可以用了。这里也需要注意i2c总线的定义。
14、手机开机过程:
开机以后,手机先进入到Boot Rom中去执行,等待150ms,如果在串口上接到特定的字符串就进入到和串口通讯的过程,在这时可以执行下载程序的过程了。如果没有接到特定的字符串,就进入到开机流程,首先执行的是bootarm.s,然后执行Nucleus的系统初始化,再执行init.c中的Application_Initialize,最后初始化任务,开始执行任务,mmitask.c中的MMI_TASK是最先要开始执行的任务。
15、FLASH芯片的设定:
根据硬件原理图,确定所使用的芯片的型号,然后到toolsMemoryDeviceList目录下,找到里面的EXCEL文件,找到对应的flash的型号,在Region栏下修改所需要的nvram的空间,这个栏目下的格式一般是类似于{0x10000,7}{0x2000,8}的形式,每个大括号中的前一个表示的是块的大小,后一个表示的是块的数量。在FLASH的文档中有块的分布的介绍,注意nvram不能跨越bank。
然后设置custom_MemoryDevice.h文件中的CS0_PART_NUMBER为对应的flash型号,要注意的是这里的flash的型号需要和excel文件中的flash型号完全一致。
16、一点体会:
在调试程序的时候,要注意不要假设BB芯片的动作,只要不是文挡中明确说明的都是不确定的,芯片内部还有一定的漏电的情况,没有加电的模块也是有一点电压的。
第三篇:解放思想创新驱动总结
“解放思想、创新驱动、转型发展”主题讨论活动总结
为积极应对煤炭市场持续疲软的不利形势,机电修造分厂根据机械总厂关于开展“解放思想、创新驱动、转型发展”主题讨论活动的活动要求,分步骤对活动进行了认真贯彻落实,使得全厂干部员工以更加解放的思想、更加坚定的信心、更加饱满的热情推动机械总厂持续发展,现将活动开展情况总结如下。
一、开展情况
(一)周密部署,合理安排,迅速把开展主题讨论活动落到实处。
(一)周密部署,合理安排,迅速把开展大讨论活动落到实处。分厂党支部高度重视,组织专门人员结合实际,制订方案,分阶段安排好各项工作。根据总厂安排部署,紧密结合机电修造分厂干部职工思想和工作实际,明确了此次活动的重要意义、指导思想和基本原则、组织领导、主要任务和工作安排,围绕八方面确定了此次主题讨论活动的主体方向和内容。
(二)营造良好氛围,加强理论学习,扎扎实实开展主题讨论活动。一是召开动员会。10月23日分厂党支部开展党员集中学习活动,传达贯彻机械总厂开展主题讨论活动精神,集中学习了集团公司董事长杨军《在集团公司下半年安全工作会议上的讲话》、《统筹施策加速煤企转型》、《在集团公司2015年经营工作会议上的讲话》;学习集团公司总经理龚乃勤《在推进经济效益型生产暨二季度经营工作会议上的讲话》、《在集团公司暨恒源股份经营分析会上的讲话》、《在恒源煤电2015年四季度工作会议上的讲话》;学习集团公司总工程师吴玉华
《在皖北煤电区队五项基础工作“去形式化”现场会上的讲话》;学习集团公司副总经理、恒源公司董事长邓西清《在恒源公司四季度工作会上的讲话》;学习总厂第一次党员大会会议精神;学习《皖北煤电集团公司关于强化年底前安全管理的若干意见》、《机械总厂关于强化年底前安全管理的若干意见》等讲话及文件精神。二是加大宣传力度。分厂支部利用宣传栏、内网、微信党建平台,座谈会等多种方式进行宣传教育,使广大职工认清形势,集思广益,积极建言,形成全厂职工参与主题讨论的生动局面。
(三)结合实际,合理安排,注重实效,用工作成效促进活动成效。分厂把主题讨论活动与安全生产工作紧密结合起来,克服工作任务重、工作繁忙的困难,坚持安排专人深入车间对讨论意见建议进行采集,做到生产讨论两不误。
二、取得的初步效果
经过积极推动,机电修造分厂主题讨论活动工作取得了初步成效,主要表现在:一是思想认识进一步提高。通过各种报告和讲话精神的学习研讨,广大党员干部进一步深化了对当前煤炭市场持续“寒冬”,集团公司坚持稳中求进的战略发展方向的认识,进一步提振了战胜危机的士气。二是行动上积极献言献策,此次讨论活动共征集意见建议24条,经过分析整理形成有效建议7条,其中一条为适应生产需求合理改变工作班次和时间经由厂委会讨论后已经在分厂内部实施,其余六条上报总厂主题讨论办公室。
经过此次讨论活动,分厂全体职工在思想上转变了观念,思想行
动统一到集团公司“战危机、保生存、谋发展”的工作部署上来;行动上确保安全生产,为年底招贤带式输送机的顺利发货而努力。
机电修造分厂 2015年12月10日
第四篇:“任务驱动”小专题总结
信息技术 “任务驱动”小专题总结
——杨红艳
自本学期确立小专题以来,从教学实效上看取得了一定的成效,有效的激发了学生的学习兴趣,调动了学习积极性。使学生很好的掌握了基础技能知识和操作性知识。
根据本学期的教学实践,现对“任务驱动”小专题总结如下:
1、调动学生学习的主动性
动机是“为了什么”,目的是“达到什么”,没有动机的活动是不存在的,我在教学过程中以任务促使学生形成动机,进而培养学生的学习兴趣。
2、满足学生的求知欲望
作为教师演示的课件,一定要在课前精心设计制作,才能达到“任务驱动”的目的。这时,教师演示讲授操作步骤,尽管“全体广播”使学生只能用视觉、听觉,不能操纵计算机,但是教室里鸦雀无声,竟没有一个人不是全神贯注盯着显示器的屏幕,这时的学生求知欲望最强,他们迫切地想知道、想学会这引人入胜的动画是怎么做出来的,也就是说,“任务驱动”创设着一种适当的情境,引起了学生的认知的冲突,使学生产生了一种悬而未决的求知欲,从而激发了学生的求知热情。
3、给予学生成就感
教学目标的实现,不仅包括教学思路、教学过程,还有教学效果。计算机学科必须动手的特点,使教师的教法不可以纸上谈兵,也使计算机的考试不适于死记硬背。“任务驱动”让学生在每一堂课上为着“任务”、为着制作一件“成品”或“半成品”去动手操作,去克服遇到的各种困难,比如,想让五环互相环套,却涂抹了圆的一部分弧;想嵌入几个漂亮的汉字,却一个字都输不上去等等,逼你提问题,去寻找解决问题的技巧。当大功告成,一种收获的喜悦、一种成就感油然而生,一节课没停手,既没感觉累也不感觉枯燥,不知不觉就下课了,要不是底
下还有课,手怎么也不愿离开那小鼠标,可再想想,难道这不说明掌握了这节课的知识?完成了“任务”。
4、开拓学生的创造力
“任务驱动”对于学生,开始是模仿,制作出与教师的“成品”一样的作品,积累了一定的基础知识,接踵而来的便是丰富多采的创造作品,这就是由“任务驱动”引发的学生的无穷的创造力。计算机学科是开放性的、知识更新极快的学科,在课堂上不可能将一个软件的所有功能都学到,也没必要这样做。计算机教师在教会学生计算机基础知识的同时,更重要的任务应该是教会学生学习方法,“任务驱动”正好给了学生这样一个机会。在一堂课上,不可能所有学生的学习进度一样,掌握快的学生在完成教师布置的任务后,又琢磨能否将自己画的图或网上下载的图片插入文档中,有的开始为迎新年制作贺卡——新的追求激励着学生去学习、去探索,去创作更美妙的“精品”。
从实施小专题的阶段过程来看,存在着一定的问题,如有的同学不积极的参与,或者在完成任务过程中缺乏创意,人云亦云。针对实施过程中的问题,给我们的应用提出了一个要求,就是在平常上课中,要多留有余地,让学生有更多的时间和机会来展示自己的作品,并在同学中进行评比,同时鼓励学生积极发表自己的见解,发展自己的设计思路,提高创新意识。
第五篇:嵌入式linux驱动学习总结
调用gcc: export PATH=$PATH:/usr/local/arm/3.4.1/bin 用gcc编译:arm-linux-gcc –o run adc.c 查看gcc: arm-linux-gcc –v 配置NFS 安装NFS Ubuntu上默认是没有安装NFS服务器的,首先要安装NFS服务程序: sudo apt-get install nfs-kernel-server 安装nfs-kernel-server时,apt会自动安装nfs-common和portmap 这样,宿主机就相当于NFS Server 配置NFS(1)配置portmap 方法1: 编辑/etc/default/portmap, 将-i 127.0.0.1 去掉.我用的是第一种方法!但不知道具体什么意思
方法2: $ sudo dpkg-reconfigure portmap , 对Should portmap be bound to the loopback address? 选N.(2)配置/etc/hosts.deny 禁止任何host(主机)能和你的NFS服务器进行NFS连接,加入: ### NFS DAEMONS portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL(3)配 置/etc/hosts.allow 允许那些你想要的主机和你的NFS服务器建立连接。下列步骤将允许任何IP地址以192.168.2开头的主机(连接到NFS服务器上),也可以指定 特定的IP地址,加入: ### NFS DAEMONS portmap: 192.168.1.lockd: 192.168.1.rquotad: 192.168.1.mountd: 192.168.1.statd: 192.168.1./etc/hosts.deny 和 /etc/hosts.allow 设置对portmap的访问.采用这两个配置文件有点类似“mask”的意思.现在/etc/hosts.deny中禁止所有用
户对portmap的访问.再在/etc/hosts.allow 中允许某些用户对portmap的访问.sudo /etc/init.d/portmap restart 重启portmap daemon.(4)配置/etc/exports NFS挂载目录及权限由/etc/exports文件定义 比如我要将将我的/opt/FriendlyARM/mini2440/root_nfs目录让用户的IP共享, 则在该文件末尾添加下列语句:
/opt/FriendlyARM/mini2440/root_nfs *(rw,sync,no_root_squash)NFS客户端能够共享NFS服务器/opt/FriendlyARM/QQ2440/root_nfs目录内容.且有读,写权限, 并且该用户进入
/opt/FriendlyARM/mini2440/root_nfs目录后的身份为root 最好加上sync, 否则 $ sudo exportfs-r 时会给出警告, sync是NFS的默认选项.showmount-e 查看NFS server的export list.若更改了/etc/exports, 运行 sudo exportfs-r 更新
运行 /etc/init.d/nfs-kernel-server restart 重启nfs服务
(5)测试NFS 可以尝试一下挂载本地磁盘
我前面开始时已经提到了我的主机IP是192.168.1.101 我现在试把/opt/FriendlyARM/mini2440/root_nfs目录挂载到/mnt目录下 mount-t nfs 192.168.1.101:/opt/FriendlyARM/mini2440/root_nfs /mnt 就101和:之间的空格我耗了1个小时
成功的挂载上的话你会在/mnt目录下看到root_nfs这个文件夹下的内容
Arm9之家账户:李向阳85 安装ncurses
ncurses是字符终端下屏幕控制的基本库。可能很多新开发的程序都不使用了,不过如果要编译一些老程序,还经常遇得到。
安装:ncurses
http://ftp.gnu.org/pub/gnu/ncurses/
./configure--without-debug #以及其它自己需要的参数
make
make install
3,继续你的make menuconfig。
图形界面出来了。
允 23:22:22
小允 23:22:31
小允 23:22:40 有用不同的名字的吗 寂寞沙洲冷 23:22:42 我把drivers下面的Makefile都添加上了 寂寞沙洲冷 23:23:17 叫misc devices 可以吧 小允 23:23:22 2410ADC_driver和2410ADC_FEATURESnengbutongma 小允 23:23:33 这两个必须一样 小允 23:23:42 这才是Kconfig的工作原理