在移植mini2440的驱动到2.6.31的时候,编译提示S3C2410_GPB5、S3C2410_GPB5_OUTPUT等类似的定义缺失。遂在内核中相关的部分arch/arm/mach-2410/include/mach中的头文件寻觅了一番,果然没有这些定义。而在2.6.29中是有这些定义的。
仔细看了一下,发现原来是新版本中采用了新的方式实现这两类定义。
1、引用端口的定义,旧版本直接通过S3C2410_GPmn来定义端口GPIOm的第n个引脚,比如GOIOB的第5个引脚引用为S3C2410_GPB5。在新版本中改为采用S3C2410_GPm(n)的方式,比如GPIOB的第5个引脚就改为S3C2410_GPB(5)。这里的S3C2410_GPm(n)函数在arch/arm/march-2410/include/mach/gpio-nrs.h中定义,共有S3C2410_GPA()~S3C2410_GPH()八组。
2、端口功能配置,比如端口的复用功能、输出或输入。在旧版本中采用的是'S3C2410_GPB_功能'的方式定义,比如S3C2410_GPB5_OUTP,直接把功能加在后面。而新版本中采用了一个宏函数S3C2410_gpio_cfgpin(端口引用, 功能),比如S3C2410_gpio_cfgpin(S3C2410_GPB(5),S3C2410_GPIO_OUTPUT)。关于端口功能的定义可以在arch/arm/march-2410/include/mach/regs-gpio.h中找到,复用功能的定义没有变化,增加了输入输出的定义S3C2410_GPIO_INPUT、S3C2410_GPIO_OUTPUT。以前的直接用宏定义配置,现在变成了需要用函数S3C2410_gpio_cfgpin来实现。这个函数的原型参见arch/arm/march-2410/include/mach/gpio-fns.h。
关键字:GPIO口 Linux
引用地址:
2440GPIO口在Linux中的定义
推荐阅读最新更新时间:2024-11-12 14:16
S3C2440 开发板实战(1): 烧录程序篇(纯Ubuntu环境)
为了学习方便就买了韦老师的JZ2440开发板,因为有做过关于STM32以及51单片机的项目,并且参加过三次电子设计大赛。但是感觉自己都是只学了个皮毛(学习嵌入式之后感觉自己真的只学了个皮毛),这里建议如果要往这个方向发展的大学生在校期间应该把微机学好(真的很有用),废话不多说,直接开始第一次简单的复习。 1.使用oflash烧写程序(慢) 插线方式:EOP和serial连上计算机。 oflash主要应用于2440和2410的程序烧写,他利用了JPAG口进行烧写,我是用了一个专门的电脑,装了一个Ubuntu 20.4系统,(我超推荐电脑装单系统,在之后的学习中超方便,就算是看完这一篇你都会觉得:去TM的
[单片机]
ARM裸机学习二:S3C2440的串口使用
1.串口的初始化(仅使用基本功能) 1.首先设置复用引脚,以串口0为例,RXD代表接受数据的引脚,TXD代表发送数据的引脚,这两个是复用引脚,需要在GPHCON寄存器中设置引脚复用 2.设置GPH的上拉 3.设置UCON0寄存器,简单的串口功能需要设置: 第10,11位,选择时钟源,这里可以设置00或者01来选择PCLK; 第0,1位,选择接收模式,这里设置成01,也就是中断或查询模式 第2,3位,选择发送模式,这里设置成01,也就是中断或查询模式 4.设置波特率,通过设置UBRDIV0寄存器来设置,设置的值的计算公式为: UBRDIVn = (int)( UART 时钟 / ( 波特率 × 16) ) –1 这里的 UART
[单片机]
2440裸机程序——触摸屏测试程序
工程当中需要添加 S3C2440A.s ;2440lib.c;main.c;touchpanel.c这四个程序。 主程序: /********************************************************************************************* * File name: main.c * Author: ZXL * Description: 通过中断方式,返回触摸屏上某触点的X,Y坐标,并用串口打印出来 * History: 2013.5.10 *******************************************************
[单片机]
s3c2410/s3c2440串口波特率的计算
要正确计算串口波特率,首先要搞清楚芯片的时钟工作原理,这部分在s3c2410/s3c2440datasheet上写的比较详细,但对新手来说结合thisway同志“s3c2410完全开发流程”中的TIMER和CLOCK两个实验,边做实验边看资料,更容易理解。 我这里只根据我的失败经验谈一下设置波特率寄存器UBRDIVn的值的计算要注意的一个问题。 datasheet上UBRDIVn寄存器部分写着: UART BAUD RATE DIVISOR REGISTER There are three UART baud rate divisor registers including UBRDIV0, UBRDIV1 and U
[单片机]
【JZ2440】【记录】【如何学习一个新的芯片:S3C2440】
1、基础介绍 : 虽然以前学过51和430单片机,但是,总结的少,也很盲目,随便看看书和视频后就开始读代码,写代码。虽然最开始读51的例程代码确实让我对单片机编程有了一个入门级的理解,作用还是很大。但是,毕竟是C语言写的,后续也没有继续的学习芯片的资源,所以对51、430内部结构、资源、操作方式完全不了解,只会对已经看过的程序做最基本的照葫芦画瓢式编程。现在学习S3C2440,用JZ2440开发板,希望把这些东西都梳理一遍。 2、对嵌入式系统性的认识: 做了很长时间地准备工作了,总算把一些基本的东西弄明白:嵌入式是什么、ARM指令集架构、ARM家族、S3C2440芯片和ARM920T指令集架构的区别、操作系统的结构(boot
[单片机]
Android arm linux 系统调用实现
In this article we will dive into system call interface implementation in arm linux(with gnu eabi).我们将从bionic中的open函数开始追溯arm linux的系统调用实现(使用gnu eabi)。 Linux的应用程序要想访问内核必须使用系统调用从而实现从usr模式转到svc模式。在arm中,这个过程是通过swi(或者和它等价的指令)来实现模式转换的。 从bionic libc中的open函数追溯系统调用实现 相关文件: bionic/libc/unistd/open.c bionic/libc/arch-arm/
[单片机]
Linux s3c6410 移植
UBoot移植 UBoot版本:u-boot-2010.03.tar.bz2 ARCH: arm CPU: arm1176 BOARD: samsung/smdk6410 SOC: s3c64xx 添加和裁剪源代码 添加相关文件夹和源代码: 1)创建文件夹:board/samsung/smdk6410; nand_spl/board/samsung/smdk6410。 2)复制board/samsung/smdk6400/下所有文件到board/samsung/smdk6410。 3)复制nand_spl/board/samsung/smdk6400下所有文件到nand_spl
[单片机]
字符驱动编写小结(基于mini2440,LED驱动)
编程:需要什么功能(机制)、如何使用这些功能(策略) 作为驱动程序编写者,我们需要在所需的编程时间以及驱动程序的灵活性之间选择一个可接受的折中。读者可能奇怪于说驱动程序“灵活”,我们用这个词实际上是强调设备驱动程序的作用在于提供机制,而不是提供策略。 机制mechanism,策略policy。如果你看过《linux device drivers》,里面给出了大概的介绍。机制提供了干什么(do what),策略提供如何做(how to do)。驱动程序完成机制的功能,把策略的实现留给用户的应用程序。通常在机制中,驱动程序要完成打开,关闭,读写,控制等功能。这些都是设备使用时最基本的操作。而策略中就要实现一些高级的数据处
[单片机]