我用的是TQ2440开发板,这个程序是参考韦东山的.
4盏LED灯
以下是驱动程序
#include #include #include #include #include #include #include #include #include #include static struct class *firstdrv_class; static struct class_device *firstdrv_class_dev; volatile unsigned long *gpbcon = NULL; volatile unsigned long *gpbdat = NULL; static int first_drv_open(struct inode *inode, struct file *file) { //printk("first_drv_openn"); /* 配置gpb5,6,7,8为输出 */ *gpbcon &= ~((0x3<<(5*2)) | (0x3<<(6*2)) | (0x3<<(7*2)) | (0x3<<(8*2))); *gpbcon |= ((0x1<<(5*2)) |(0x1<<(6*2)) | (0x1<<(7*2)) | (0x1<<(8*2))); return 0; } static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos) { int val; //printk("first_drv_writen"); copy_from_user(&val, buf, count); // copy_to_user(); if (val == 1) { // 点灯 *gpbdat &= ~((1<<5) | (1<<6) | (1<<7) | (1<<8)); } else { // 灭灯 *gpbdat |= (1<<5) | (1<<6) | (1<<7) | (1<<8); } return 0; } static struct file_operations first_drv_fops = { .owner = THIS_MODULE, /* 这是一个宏,推向编译模块时自动创建的__this_module变量 */ .open = first_drv_open, .write = first_drv_write, }; int major; static int first_drv_init(void) { major = register_chrdev(0, "first_drv", &first_drv_fops); // 注册, 告诉内核 firstdrv_class = class_create(THIS_MODULE, "firstdrv"); firstdrv_class_dev = class_device_create(firstdrv_class, NULL, MKDEV(major, 0), NULL, "xyz"); /* /dev/xyz */ gpbcon = (volatile unsigned long *)ioremap(0x56000010, 16); //0x56000010是的GPIOB的 gpbdat = gpbcon + 1; printk("first_drv_init...n"); return 0; } static void first_drv_exit(void) { unregister_chrdev(major, "first_drv"); // 卸载 class_device_unregister(firstdrv_class_dev); class_destroy(firstdrv_class); iounmap(gpbcon); printk("first_drv_exit...n"); } module_init(first_drv_init); module_exit(first_drv_exit); MODULE_LICENSE("GPL"); 以下是测试程序 #include #include #include #include /* firstdrvtest on * firstdrvtest off */ int main(int argc, char **argv) { int fd; int val = 1; fd = open("/dev/xyz", O_RDWR); if (fd < 0) { printf("can't open!n"); } if (argc != 2) { printf("Usage :n"); printf("%s return 0; } if (strcmp(argv[1], "on") == 0) { val = 1; } else { val = 0; } write(fd, &val, 4); return 0; }
上一篇:u-boot 第一阶段启动流程
下一篇:为madplay编写应用程序
推荐阅读
史海拾趣
Alpha Wire公司是一家在电子行业中知名的制造商,专注于生产高性能电线、电缆和线束。虽然我无法提供准确的发展故事,但我可以向你介绍一些关于Alpha Wire公司的背景和其在行业中的重要性。
公司成立:Alpha Wire公司成立于1922年,总部位于美国新泽西州。创始人是一位名叫韦尔纳·布雷德的工程师,他创立了Alpha Wire公司,旨在为不同领域的电子设备提供高质量的电线和电缆。
技术创新:Alpha Wire公司在其发展历程中一直致力于技术创新和产品质量的提升。公司不断投资于研发,并采用最新的材料和生产工艺,以确保其产品在性能和可靠性方面处于行业领先地位。
产品线扩展:随着时间的推移,Alpha Wire公司不断扩展其产品线,以满足不断变化的市场需求。除了标准的电线和电缆产品外,公司还开发了各种特种电线和线束,如耐高温、耐化学腐蚀、防火等特性的产品,以满足不同行业和应用的需求。
全球市场拓展:Alpha Wire公司在其发展过程中不断拓展其市场份额,通过建立全球分销网络和合作伙伴关系,将其产品销往世界各地。公司不仅在北美市场占据重要地位,还在欧洲、亚洲和其他地区建立了业务和生产基地,以更好地服务全球客户。
质量和可靠性:作为一家具有悠久历史的公司,Alpha Wire始终将质量和可靠性视为其产品的核心竞争力。公司严格遵循国际标准和质量管理体系,对原材料进行严格筛选和检验,并采用先进的生产工艺和严格的质量控制程序,以确保产品的稳定性和一致性。
以上是关于Alpha Wire公司的一些基本信息,虽然我无法提供具体的发展故事,但希望这些信息能够帮助你了解该公司在电子行业中的重要性和影响力。
为了进一步扩大市场份额,GD Rectifiers Ltd实施了积极的国际化战略。公司首先在欧洲市场设立了销售分支机构,凭借其优质的产品和服务迅速赢得了当地客户的认可。随后,公司又陆续在北美、亚洲等地区建立了分销网络,逐步构建起覆盖全球的营销体系。在国际化进程中,GD Rectifiers Ltd注重与当地企业的合作与交流,共同推动行业标准的制定和技术进步。通过不断的努力,公司成功地将品牌和产品推向了全球市场,实现了业务规模的快速增长。
在“2018慕尼黑上海电子展”上,ABLIC展示了其即将推出的紫外传感器。这一产品的推出,彰显了ABLIC在传感器领域的创新能力。紫外传感器在环境监测、安全防护等领域具有广泛应用前景。ABLIC凭借其在半导体技术方面的深厚积累,成功研发出具有高性能和稳定性的紫外传感器,为市场带来了新的选择。
ABLIC的起源可以追溯到精工电子有限公司旗下的精工半导体有限公司(SII Semiconductor Corporation)。在半导体产业蓬勃发展的背景下,日本政府通过政策投资银行对SII进行了注资,使其在原有业务基础上进一步拓展。然而,随着股权结构的变动,SII决定在2018年进行品牌重塑,更名为ABLIC,并专注于模拟半导体业务的发展。这一决策标志着ABLIC踏上了全新的发展道路。
东通电子自成立以来,始终将品质和技术创新作为公司发展的核心。在有机薄膜电容器的生产过程中,公司严格把控原材料质量,采用进口优质材料,确保产品的稳定性和可靠性。同时,公司不断投入研发资金,引进先进技术和设备,提升产品的技术含量和附加值。这些举措使得东通电子的有机薄膜电容器在市场上赢得了良好的口碑。
随着公司规模的扩大和产品线的丰富,ECM Electronics Limited.开始积极拓展市场。公司不仅在国内市场取得了良好的销售业绩,还积极开拓国际市场,将产品出口到多个国家和地区。为了更好地服务全球客户,公司还设立了海外办事处和研发中心,加强与国际市场的联系和合作。通过国际化战略的实施,ECM进一步提升了品牌知名度和市场竞争力。
有调通过marvell wifi 8686 sdio接口驱动来讨论下??? 正在调sdio接口的wifi 8686驱动,sdio确认好的,读写寄存器,加载固件都没问题。有以下问题: 1. 我是直接把驱动放在bsp中编的,wince启动后自动加载wifi驱动, 并且这个wifi驱动会自行搜索热点。我的理解是wifi驱动加载固件启动完wifi芯片注册网络 ...… 查看全部问答∨ |
|
SESSION_POS_S *pTestpos1, *pTestpos2, *pTestpos3, *pPos; LIST *pMyList = NULL; int NodeIndex = 0; DPRINT("-------- lstAdd测试 -------\\n ...… 查看全部问答∨ |
|
用电位器输出一个电压值,从我watch窗口看到的ADCresult值都在变化,变化比较大。如0xabc0,b为都会能差4,帮忙分析一下可能那里设置不对。谢谢!… 查看全部问答∨ |
|
想请问你一下 那个ez430-rf2500为什么ed连上电池两个灯还是不闪。。ap的红灯在闪烁。。并且PC上温度只有一个ap温度显示。。就是说ed的没有反应。。好像是没有连接到网络。。后来又折腾了一下。。现在ap的红绿灯都在闪。。但是ed还是没反应。 ...… 查看全部问答∨ |
|
#include<reg51.h> // 包含51单片机寄存器定义的头文件unsigned char code Tab[ ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数字0~9的段码unsigned char int_time ; //中断次数计数变量unsigned ...… 查看全部问答∨ |
module main ( ....); wire clk1MHz; // 产生1MHz的时钟波形 // 输入为20MHz的时钟 clock_divider instT1MHz &nb ...… 查看全部问答∨ |