历史上的今天
返回首页

历史上的今天

今天是:2025年01月15日(星期三)

正在发生

2020年01月15日 | S3C2440 LED驱动

2020-01-15 来源:eefocus

//头文件

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

//定义设备名称
#define DEVICE_NAME "leds"

//led与ARM硬件连接

static unsigned long led_table [] = {
 S3C2410_GPB(5),
 S3C2410_GPB(6),
 S3C2410_GPB(7),
 S3C2410_GPB(8),
};

//ARM I/0配置为输出

static unsigned int led_cfg_table [] = {
 S3C2410_GPIO_OUTPUT,
 S3C2410_GPIO_OUTPUT,
 S3C2410_GPIO_OUTPUT,
 S3C2410_GPIO_OUTPUT,
};

//file operations 结构体的ioctl()函数

static int sbc2440_leds_ioctl(
 struct inode *inode, 
 struct file *file, 
 unsigned int cmd, 
 unsigned long arg)
{
 switch(cmd) {
 case 0: case 1:
  if (arg > 4) return -EINVAL;
  s3c2410_gpio_setpin(led_table[arg], !cmd);
  return 0;
 default: return -EINVAL;
 }
}

static struct file_operations dev_fops = {
 .owner = THIS_MODULE,
 .ioctl = sbc2440_leds_ioctl,
};

static int __init dev_init(void)
{
 int i,ret;
 for (i = 0; i < 4; i++) {
  s3c2410_gpio_cfgpin(led_table[i], led_cfg_table[i]);
  s3c2410_gpio_setpin(led_table[i], 0);
 }

 ret = misc_register(&misc);

 printk (DEVICE_NAME"tInitializedn");

 return ret;
}

static void __exit dev_exit(void)
{
 misc_deregister(&misc);
}

module_init(dev_init);
module_exit(dev_exit);
MODULE_LICENSE("GPL");

/////////////////////////////////////////////////////////////////////////////////

//Makefile

DEVICE = led
ifneq ($(KERNELRELEASE),)
obj-m := ${DEVICE}.o
else
CC = arm-linux-gcc
KERNELDIR = /opt/linux-2.6.32.2
PWD       := $(shell pwd)
modules:
 $(MAKE) -C $(KERNELDIR) M=$(PWD) LDDINC=$(KERNELDIR)/include modules

endif

clean:
 rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.symvers *~ modules.order

depend .depend dep:
 $(CC) $(CFLAGS) -M *.c > .depend


ifeq (.depend,$(wildcard .depend))
include .depend
endif

////////////////////////////////////////////////////////////////////////////////////////////

//API

#include
#include
#include
#include

int main(int argc, char **argv)
{
 int on;
 int led_no;
 int fd;
 if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 ||
     on < 0 || on > 1 || led_no < 0 || led_no > 3) {
  fprintf(stderr, "Usage: leds led_no 0|1n");
  exit(1);
 }
 fd = open("/dev/leds0", 0);
 if (fd < 0) {
  fd = open("/dev/leds", 0);
 }
 if (fd < 0) {
  perror("open device leds");
  exit(1);
 }
 ioctl(fd, on, led_no);
 close(fd);
 return 0;
}

////////////////////////////////////////////////////////////////

//Makefile

CROSS=arm-linux-

all: led

led: led.c
 $(CROSS)gcc -o led led.c

clean:
 @rm -vf led *.o *~

推荐阅读

史海拾趣

启攀微(CHIPHOM)公司的发展小趣事

作为一家具有社会责任感的企业,启攀微电子(CHIPHOM)始终关注环境保护和社会公益事业。公司积极响应国家节能减排的号召,采用环保材料和节能技术生产产品。同时,公司还积极参与社会公益活动,捐款捐物支持灾区重建、资助贫困学生等。通过践行社会责任,启攀微电子(CHIPHOM)不仅提升了企业的社会形象,也为社会进步做出了积极贡献。

以上5个故事仅代表启攀微电子(CHIPHOM)在电子行业中发展起来的一些可能情景和方面,实际情况可能有所不同。如需更多准确信息,请查阅相关官方资料或联系公司相关人员。

Heatron公司的发展小趣事

进入21世纪后,Heatron公司开始积极寻求国际合作机会,以进一步拓展其全球业务。公司先后与多个国家的知名企业建立了战略伙伴关系,共同开发新产品、新技术。通过资源共享和市场互补,Heatron不仅成功进入了多个新兴市场,还显著提升了其品牌在国际市场上的知名度和影响力。

Glorious Sources Co Ltd公司的发展小趣事
在特定场合下,如仓库、博物馆等,利用可听式光探测器电路监测光线变化以触发警报系统。
Advance Tapes公司的发展小趣事

随着电子行业的快速发展,对胶带产品的性能要求也越来越高。Advance Tapes公司意识到,只有不断创新才能在激烈的市场竞争中立于不败之地。于是,公司加大了对研发的投入,引进了一批高素质的研发人才,并与多家高校和研究机构建立了合作关系。经过不懈努力,Advance Tapes成功开发出了一系列具有高性能、高可靠性的胶带产品,得到了广大客户的认可。

Adam Tech公司的发展小趣事

Adam Tech公司成立于1987年,总部位于美国新泽西州。创业初期,公司面临着资金短缺、市场竞争激烈等诸多困难。然而,创始人凭借对电子连接器行业的深刻理解和执着追求,带领团队克服重重困难,逐渐在市场上站稳脚跟。公司最初的产品线相对单一,但凭借着高品质和可靠的性能,逐渐赢得了客户的信任。

Feller US公司的发展小趣事

在电动汽车领域,技术创新是企业生存和发展的关键。菲斯克一直致力于研发更加先进、更加环保的电动汽车技术。经过多年的努力,公司终于在某项关键技术上取得了重大突破。这一突破不仅提升了电动汽车的性能和续航里程,还为公司赢得了市场的广泛认可。菲斯克凭借这一技术优势,成功推出了一系列备受好评的电动汽车产品,进一步巩固了其在市场中的地位。

问答坊 | AI 解惑

车身控制功率IC趋向集成化

汽车的方便、舒适等都和车身电子控制技术密不可分,车身电子控制技术也日益引起业界重视。  目前国际上车身电子集成控制技术比较成熟,其中有代表性的公司有德科电子、博世、欧姆龙等,他们在电子控制ECU方面已经历经几十年的研发和生产,技术较 ...…

查看全部问答>

柴油发电机常见问题

柴油机熄火停车或运转不稳定:     柴油机启动困难或运转不稳定燃油污染或不适宜将燃油排放并以适当燃油加注燃油系统内有空气或燃油系统管路未锁紧将燃油管路排器且锁紧燃油系统管路燃油管路阻塞清洗燃油管路喷嘴总成或燃油泵失效更换喷 ...…

查看全部问答>

提供基于Vxworks的各种PowerPC平台(MPC82XX/MPC85XX/MPC7448/AMCC440GX等)

Beijing Freesense是专业PowerPC设计公司,提供基于Vxworks和Liunx的各种PowerPC平台(MPC82XX/MPC85XX/MPC7448/AMCC440GX等),提供设计开发服务。Tel: 010-82790138、13501394847,zhytang@freesense.com.cn…

查看全部问答>

软件开发工程师,急求,兼职亦可

移动软件开发工程师          职位要求: 1、嵌入式平台(WinCE,平台),应用软件开发; 2、熟悉J2ME开发。 3、具有良好的团队精神。 4、一年以上WinCE平台开发经验。 请有意者将简历mail至 suntjl@sina.com ...…

查看全部问答>

s3c2440 + wince休眠唤醒的问题

下面是nboot(steldr——boot)里关于休眠唤醒的处理代码 WAKEUP_POWER_OFF     ; Release SCLKn after wake-up from the POWER_OFF mode.     ldr                r1, =MISCCR & ...…

查看全部问答>

请问高手要做一个LCD显示广告语同时带声音

这功能在单片机上可以实现吗?对于单片机用什么方法可以烧写里面的程序? 谢谢各位高手为小弟解答..…

查看全部问答>

MP3属于嵌入式系统吗

各位,我不是很清楚嵌入式系统,请问我们外面买的那些MP3/4属于嵌入式系统吗?还有一个问题,我在网上看到基本上嵌入式系统好像就分两种,什么LINUX和WINCE,怎么区分呢,我做MP3开发的,是C语言和汇编混合的,不知道这个是属于哪种呢?谢谢!…

查看全部问答>

FTF China 2010之行 (3)

1.       智能电网。智能电网可能是本次FTF最为突出的主题,其实去年FTF也就在推这个理念,当然大家都相信智能电网是大势所趋,飞思卡尔在智能电表和集中器方面展示了解决方案,其中集中器用的就是传说中的MCF54418 ...…

查看全部问答>