当前位置: 首页 > news >正文

网站建设流程及规范万网做网站怎么样

网站建设流程及规范,万网做网站怎么样,美容医疗手机网站模板,微信社群营销怎么做学习交流加 个人qq#xff1a; 1126137994个人微信#xff1a; liu1126137994学习交流资源分享qq群#xff1a; 962535112 本文记录在IMX6开发板上移植鼎芯Linux3.0.35内核时#xff0c;需要配置的矩阵按键的信息。本设备使用的矩阵按键是一个5*5的矩阵按键。 本人其他开发… 学习交流加 个人qq 1126137994个人微信 liu1126137994学习交流资源分享qq群 962535112 本文记录在IMX6开发板上移植鼎芯Linux3.0.35内核时需要配置的矩阵按键的信息。本设备使用的矩阵按键是一个5*5的矩阵按键。 本人其他开发板内核的移植与分析请点击链接查看 jz2440开发板相关与IMX6开发板相关 1、IMX6移植3.0.35内核时需要配置的按键的信息 首先我们要知道我们的按键接的核心板的引脚都有哪些 3.0.35内核中使用的矩阵按键驱动源码在”drivers/input/keyboard/matrix_keypad.c”中。 里面是一个平台驱动我们只要写平台设备描述硬件的资源与此驱动匹配即可。 驱动中有代码如下 488 static struct platform_driver matrix_keypad_driver { 489 .probe matrix_keypad_probe, 490 .remove __devexit_p(matrix_keypad_remove), 491 .driver { 492 .name matrix-keypad, 493 .owner THIS_MODULE, 494 #ifdef CONFIG_PM 495 .pm matrix_keypad_pm_ops, 496 #endif 497 }, 498 }; 499 module_platform_driver(matrix_keypad_driver);通过阅读平台驱动的probe函数可得知我们写的平台设备应提供具本哪些硬件信息. 378 static int __devinit matrix_keypad_probe(struct platform_device *pdev) 379 { 380 const struct matrix_keypad_platform_data *pdata; //平台设备提供的platform_data 381 const struct matrix_keymap_data *keymap_data; 382 struct matrix_keypad *keypad; 383 struct input_dev *input_dev; 384 unsigned short *keycodes; 385 unsigned int row_shift; 386 int err;388 pdata pdev-dev.platform_data;... ..... 394 keymap_data pdata-keymap_data;... ..... 433 matrix_keypad_build_keymap(keymap_data, row_shift, 434 input_dev-keycode, input_dev-keybit); //从keymap_data里分解出行列键对应的键码... ..... 439 err init_matrix_gpio(pdev, keypad); //注册行线的中断号... ..... 443 err input_register_device(keypad-input_dev); //输入设备对象注册... ..... 456 return err; 457 }通过probe函数可以确定我们写平台设备时只需通过platform_data成员提供平台驱动所需的信息无需再提供resource. 再确定结构体matrix_keypad_platform_data的每个成员的作用即可,如不清楚具体用途可以在驱动代码里通过查看对成员值的访问反推出用途. 在include/linux/input/matrix_keypad.h中有 #define KEY(row, col, val) ((((row) (MATRIX_MAX_ROWS - 1)) 24) |\(((col) (MATRIX_MAX_COLS - 1)) 16) |\((val) 0xffff)) ..... #define KEY_ROW(k) (((k) 24) 0xff) #define KEY_COL(k) (((k) 16) 0xff) #define KEY_VAL(k) ((k) 0xffff) ..... ..... #define MATRIX_SCAN_CODE(row, col, row_shift) (((row) (row_shift)) (col))...... ...... struct matrix_keymap_data {const uint32_t *keymap; //装载按键对应的键码数组, 注意每个键码需要使用宏KEY来写。也就是一个32位数据里行列键码各占用8, 8, 16位.unsigned int keymap_size; //键码数组的元素个数 }; ...... ...... struct matrix_keypad_platform_data {const struct matrix_keymap_data *keymap_data; //键码数据对象的首地址const unsigned int *row_gpios; //行线用的IO口const unsigned int *col_gpios; //列线用的IO口unsigned int num_row_gpios; //多少个行线unsigned int num_col_gpios; //多少个列线unsigned int col_scan_delay_us; //扫描列线时间隔时间unsigned int debounce_ms; //防抖动的间隔时间unsigned int clustered_irq; //行线是否共用一个中断, 设0则每个行线的中断是独立的unsigned int clustered_irq_flags;bool active_low; //键按下时行线是否为低电平bool wakeup;bool no_autorepeat; //按键按下时是否重复提交按键, 设1就是不重复,设0重复 }; 根据我们的原理图 行线接: KEY_ROW0, KEY_ROW1, KEY_ROW2, KEY_ROW4,KEY_ROW5 列线接: KEY_ROW0, KEY_ROW1, KEY_ROW2, KEY_ROW4,KEY_ROW5 2、添加设备信息的具体步骤 Imx_keypad平台层函数的添加 在board-mx6q_sabresd.c中添加 //注意键值可以根据自己项目的需求自己更改 static int mx6_sabresd_keymap[] {KEY(0, 0, KEY_UP),KEY(0, 1, KEY_F9),KEY(0, 2, KEY_F3),KEY(0, 4, KEY_DOWN),KEY(0, 5, KEY_PRINT),KEY(1, 0, KEY_RIGHT),KEY(1, 1, KEY_F8),KEY(1, 2, KEY_F4),KEY(1, 4, KEY_HOME),KEY(1, 5, KEY_PAGEDOWN),KEY(2, 0, KEY_F12),KEY(2, 1, KEY_F7),KEY(2, 2, KEY_F5),KEY(2, 4, KEY_END),KEY(2, 5, KEY_PAGEUP),KEY(4, 0, KEY_F11),KEY(4, 1, KEY_F1),KEY(4, 2, KEY_F6),KEY(4, 4, KEY_NUMLOCK),KEY(4, 5, KEY_ESC),KEY(5, 0, KEY_F10),KEY(5, 1, KEY_F2),KEY(5, 2, KEY_LEFT),KEY(5, 4, KEY_SCROLLLOCK),KEY(5, 5, KEY_PAUSE),};static const struct matrix_keymap_data mx6_sabresd_map_data __initconst {.keymap mx6_sabresd_keymap,.keymap_size ARRAY_SIZE(mx6_sabresd_keymap), }; 在mx6_sabresd_board_init函数中添加 imx6q_add_imx_keypad(mx6_sabresd_map_data); //KEYBOARD 这个函数是在Platfprm-imx-keypad.c定义的需要在Devices-imx6q.h中添加宏定义 extern const struct imx_imx_keypad_data imx6q_imx_keypad_data ; //lyy #define imx6q_add_imx_keypad(pdata) \imx_add_imx_keypad(imx6q_imx_keypad_data,pdata);在Platfprm-imx-keypad.c中添加 //lyy #ifdef CONFIG_SOC_IMX6Q const struct imx_imx_keypad_data imx6q_imx_keypad_data __initconst imx_imx_keypad_data_entry_single(MX6SL, SZ_16); #endif /* ifdef CONFIG_SOC_IMX6Q */在Board-mx6_sabresd.h中添加并将所有复用引脚注释掉 有可能有其它设备复用了下面这些引脚一定要先将他们注释掉 /* keyboaed lyy */MX6Q_PAD_KEY_COL0__KPP_COL_0,MX6Q_PAD_KEY_ROW0__KPP_ROW_0,MX6Q_PAD_KEY_COL1__KPP_COL_1,MX6Q_PAD_KEY_ROW1__KPP_ROW_1,MX6Q_PAD_KEY_COL2__KPP_COL_2,MX6Q_PAD_KEY_ROW2__KPP_ROW_2,MX6Q_PAD_KEY_COL4__KPP_COL_4,MX6Q_PAD_KEY_ROW4__KPP_ROW_4,MX6Q_PAD_CSI0_DAT4__KPP_COL_5,MX6Q_PAD_CSI0_DAT5__KPP_ROW_5,在arch\arm\mach-mx6\Clock.c中的lookups[]中加入 static struct clk_lookup lookups[] { 。。。。。。。 。。。。。。。 _REGISTER_CLOCK(NULL, kpp, dummy_clk), //这是加入的 }3、测试 重新编译内核后烧写到开发板然后测试按键是否可以正常使用 首先在板子启动后在板子的终端输入; $ cat /proc/bus/input/devices查看当前的设备找到我们的按键设备假设为evet0。 则在终端中输入 $ hexdump /dev/input/event0所有按键都按一遍会发现终端中打印了按键的值显示的内容好像是某一种编码不知道怎么转换为按键的值 4、总结 已经转行做互联网了现在把实验室相关的事做一下之前没补完的博客补一下以后可能就不写嵌入式相关的内容了。当然还会写关于Linux内核的相关知识。 做嵌入式如果做的不深如果不是去深度定制Linux内核或者深度开发驱动其实就没什么可做的了。希望看到这里的朋友加油不管在做什么不要放弃下一步就会成功 学习探讨加 qq1126137994 微信liu1126137994
http://www.pierceye.com/news/620166/

相关文章:

  • 做视频网站视频空间设计是什么
  • 怎么把网站推广wordpress 百万数据
  • 乐陵市人力资源中心网站网站的内容和功能
  • wordpress网站搬家图片路径做网站的算什么行业
  • 个人网站logo重庆网络优化平台
  • 河南 网站建设静态网站是什么意思
  • 上海正规做网站公司电话基于flash网站设计
  • 每个城市建设规划在哪个网站wordpress 无法安装主题
  • 自建网站做外贸谷歌推广网站内部资源推广方法
  • 网站数据库5g一个人看的免费视频高清直播
  • 怎么做网站注册推广泰州网站建设费用
  • 找南阳建立网站的公司网址大全最新版的
  • 网站建设与维护就业前景小程序开发外包注意事项
  • 胶州网站建设哪里有天润网站建设
  • 网站备案 怎么加搜索引擎网站建设
  • 做外贸自己开公司网站网站建设三个友好
  • 深圳高端品牌网站设计网站建设实训报告收获
  • 万虹点读机如何做系统下载网站网站seo的重要性
  • 同一家公司可以做几个网站吗铁岭网站开发公司
  • 网站推广费用大概需要多少钱个人二级网站怎么做
  • 查询企业的网站有哪些山东平台网站建设找哪家
  • 如何推广外贸型网站wordpress本地环境迁移
  • 网站建设国内外现状网站建设公司 网络服务
  • 百度网站首页福田时代汽车官方网站
  • 网站建设智推网深圳进出口贸易有限公司
  • 网站开发语言pwordpress v4.9.5
  • 东莞建站模板源码东莞注塑切水口东莞网站建设
  • 做文案策划需要看什么网站服装网站开发目的
  • 湖北定制型网站建设微信公众平台网页版
  • 需要做网站的公司有哪些免费网页模板之家