iTOP-4412 开发板的 GPIO 是怎么操作的?

Exynos4412 所有的 GPIO 都有固定的地址,为了方便操作这些 GPIO,Linux 内核

在 gpio-exynos4.h 里面定义了一些 GPIO 的宏,例如:

#define EXYNOS4_GPA0(_nr)  (EXYNOS4_GPIO_A0_START + (_nr))

#define EXYNOS4_GPA1(_nr)  (EXYNOS4_GPIO_A1_START + (_nr))

#define EXYNOS4_GPB(_nr)  (EXYNOS4_GPIO_B_START + (_nr))

.....................................

#define EXYNOS4_GPY5(_nr)  (EXYNOS4_GPIO_Y5_START + (_nr))

#define EXYNOS4_GPY6(_nr)  (EXYNOS4_GPIO_Y6_START + (_nr))

#define EXYNOS4_GPZ(_nr)  (EXYNOS4_GPIO_Z_START + (_nr))

这些宏就是把每个 GPIO 的地址做了一下封装,它的好处就是方便我们使用并且

根据宏的名字就能直观的知道是在操作哪个 GPIO。

Linux 内核中关于 GPIO 的驱动在 driver/gpio/gpio-exynos4.c 文件里面, 在这

个文件中 GPIO 驱动初始化入口函数是 exynos4_gpiolib_init, 因为这个文件同

时也支持 4210 的 GPIO,所以开始先初始化了一些通用的 GPIO (4412 和 4210 都

有的 GPIO) ,代码如下:

chip = exynos4_gpio_common_4bit;

nr_chips = ARRAY_SIZE(exynos4_gpio_common_4bit);

for (i = 0; i < nr_chips; i++, chip++) {

if (chip->config == NULL)

chip->config = &gpio_cfg;

if (chip->base == NULL)

pr_err("No allocation of base address for [common gpio]");

}

samsung_gpiolib_add_4bit_chips(exynos4_gpio_common_4bit,

nr_chips);

变量 exynos4_gpio_common_4bit 是一个数组, 定义了一些通用的 GPIO, nr_chips

是记录的 exynos4_gpio_common_4bit 数组里面素个数。

首先使用 for 循环遍历 exynos4_gpio_common_4bit 所有的素,为每个素的

config 结构赋值:

if (chip->config == NULL)

chip->config = &gpio_cfg;

gpio_cfg 是类型为 s3c_gpio_cfg 的结构体,这个结构体的定义如下:

struct s3c_gpio_cfg {

unsigned int  cfg_eint;

s3c_gpio_pull_t  (*get_pull)(struct s3c_gpio_chip *chip, unsigned

offs);

int    (*set_pull)(struct s3c_gpio_chip *chip, unsigned offs,

s3c_gpio_pull_t pull);

unsigned (*get_config)(struct s3c_gpio_chip *chip, unsigned offs);

int  (*set_config)(struct s3c_gpio_chip *chip, unsigned offs,

unsigned config);

};

通过上面的代码我们可以看到这个结构体里主要是一些函数指针,get_pull 是

获取 GPIO 的上拉状态,set_pull 是设置 GPIO 上拉或下拉的,set_config 是设

置 GPIO 的工作模式,例如:输出/输入/其他功能。下面我们来看看 gpio_cfg

变量的定义,如下:

static struct s3c_gpio_cfg gpio_cfg = {

.set_config  = s3c_gpio_setcfg_s3c64xx_4bit,

.set_pull  = s3c_gpio_setpull_exynos4,

.get_pull  = s3c_gpio_getpull_exynos4,

};

通过上面的代码,可以看到分别对 gpio_cfg 结构的三个函数指针赋值,这三个

函数 的 定义 是在 gpio-config.c 里面 实现 的 , 这个 文 件 在 内核 源 码

arch/arm/plat-samsung 目录下,这三个函数的作用就是根据传进来的参数,配

置 GPIO 相应的寄存器,从而实现对 GPIO 的操作。

然后 我们 回到 gpio-exynos4.c , 接 着看 下 面 的代 码, 完成 了

exynos4_gpio_common_4bit 中每个素的 config 结构赋值后, 接着会调用函数

samsung_gpiolib_add_4bit_chips(exynos4_gpio_common_4bit,  nr_chips) 来

向系统注册 GPIO 结构体。代码如下:

void  __init  samsung_gpiolib_add_4bit_chips(struct  s3c_gpio_chip  *chip,

int nr_chips)

{

for (; nr_chips > 0; nr_chips--, chip++) {

samsung_gpiolib_add_4bit(chip);

s3c_gpiolib_add(chip);

}

}

上面的代码主要有两个函数组成分别是 samsung_gpiolib_add_4bit(chip) 和

s3c_gpiolib_add(chip), 首先我们来看下 samsung_gpiolib_add_4bit(chip)函

数的实现:

void __init samsung_gpiolib_add_4bit(struct s3c_gpio_chip *chip)

{

chip->chip.direction_input = samsung_gpiolib_4bit_input;

chip->chip.direction_output = samsung_gpiolib_4bit_output;

chip->pm = __gpio_pm(&s3c_gpio_pm_4bit);

}

这个函数也是为函数指针赋值,direction_input 是设置 GPIO 为输入模式,

direction_output 是设置 GPIO 为输出。

s3c_gpiolib_add(chip)函数主要作用是给一些函数指针赋值,然后根据传进来

的参数把对应的 GPIO 的信息保存到 gpio_desc 结构里,gpio_desc 是内核里面

定义的一个全局变量,用来保存每个 GPIO 的信息。 至此 GPIO 的驱动初始化就完

成了,其他它主要完成的功能就是为每个 GPIO 的结构体里面的函数指针赋值,

最后把每个 GPIO 结构信息保存到全局变量 gpio_desc 里面。

上面已经完成了一些通用的 GPIO 驱动的初始化,我们在回到 gpio-exynos4.c,

下面是根据 CPU 的型号初始化 CPU 特定的 GPIO 了,代码如下:

/* Only 4210 GPIO part */

if (soc_is_exynos4210()) {

chip = exynos4210_gpio_4bit;

nr_chips = ARRAY_SIZE(exynos4210_gpio_4bit);

for (i = 0; i < nr_chips; i++, chip++) {

if (chip->config == NULL)

chip->config = &gpio_cfg;

if (chip->base == NULL)

pr_err("No allocation of base address [4210 gpio]");

}

samsung_gpiolib_add_4bit_chips(exynos4210_gpio_4bit,

nr_chips);

} else {

/* Only 4212/4412 GPIO part */

chip = exynos4212_gpio_4bit;

nr_chips = ARRAY_SIZE(exynos4212_gpio_4bit);

for (i = 0; i < nr_chips; i++, chip++) {

if (chip->config == NULL)

chip->config = &gpio_cfg;

if (chip->base == NULL)

pr_err("No allocation of base address [4212 gpio]");

}

samsung_gpiolib_add_4bit_chips(exynos4212_gpio_4bit,

nr_chips);

}

通过看上面的代码,初始化过程与前面介绍的初始化通用 GPIO 原理是一样的,

这里我们不在细介绍。对所有 GPIO 的初始化完成以后内核中的其他驱动模块

就可以方便的使用我们注册到 gpio_desc 里面的 GPIO 了。内核提供了几个全局

函数来操作这些 GPIO:

int gpio_request(unsigned gpio, const char *label)

void gpio_free(unsigned gpio)

int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull)

int s3c_gpio_cfgpin(unsigned int pin, unsigned int config)

int gpio_direction_input(unsigned gpio)

int gpio_direction_output(unsigned gpio, int value)

gpio_request 函数是申请 GPIO 操作, 根据传递进来的参数 gpio, 会去全局变量

gpio_desc 里面找到对应的 GPIO 结构,判断 desc 的标志位 flag 有没有被设置

FLAG_REQUESTED,如果有设置说明其他地方在使用这个 GPIO,程序返回-EBUSY

错误,如果没有设置就设置 flags 的标记为 FLAG_REQUESTED。

gpio_free 函数是释放 GPIO 操作,根据传递进来的参数,在 gpio_desc 全局变

量找到对应的 GPIO 结构,清除掉 desc 的 flag 标志变量的 FLAG_REQUESTED 位。

s3c_gpio_setpull 函数是设置 GPIO 的上拉或下拉的,变量 pull 的取值范围如

下定义:

#define S3C_GPIO_PULL_NONE  ((__force s3c_gpio_pull_t)0x00)

#define S3C_GPIO_PULL_DOWN  ((__force s3c_gpio_pull_t)0x01)

#define S3C_GPIO_PULL_UP  ((__force s3c_gpio_pull_t)0x02)

S3C_GPIO_PULL_NONE 是悬空

S3C_GPIO_PULL_DOWN 是下拉

S3C_GPIO_PULL_UP 是上拉

s3c_gpio_cfgpin 函数是设置 GPIO 的功能:输入/输出/其他功能,第二个参数

config 取值范围如下:

#define S3C_GPIO_INPUT  (S3C_GPIO_SPECIAL(0))

#define S3C_GPIO_OUTPUT  (S3C_GPIO_SPECIAL(1))

#define S3C_GPIO_SFN(x)  (S3C_GPIO_SPECIAL(x))

S3C_GPIO_INPUT 是输入模式,S3C_GPIO_OUTPUT 是输出模式,S3C_GPIO_SFN(x)

是其他模式,例如中断模式等。

gpio_direction_input 函数设置 GPIO 是输入功能。

gpio_direction_output 设置 GPIO 输出,第二个参数 value 取值 0 或 1,0 代表

输出低电平,1 代表输出高电平。

下面我们来看几个 GPIO 操作的例子:

if (gpio_request(EXYNOS4_GPX3(3), "MPU6050 INT"))

printk(KERN_WARNING  "MPU6050  INT(GPX3.3)  Port  request  error!!!\n");

else{

s3c_gpio_setpull(EXYNOS4_GPX3(3), S3C_GPIO_PULL_NONE);

s3c_gpio_cfgpin(EXYNOS4_GPX3(3), S3C_GPIO_SFN(0));

gpio_direction_input(EXYNOS4_GPX3(3));

gpio_free(EXYNOS4_GPX3(3));

}

上面的代码是设置 GPIO 引脚 GPX3_3 为输入模式,悬空。

err = gpio_request_one(EXYNOS4_GPX0(0), GPIOF_IN, "mcp251x_INT");

if (err) {

printk(KERN_ERR "failed to request mcp251x_INT\n");

return -1;

}

s3c_gpio_cfgpin(EXYNOS4_GPX0(0), S3C_GPIO_SFN(0xf));

s3c_gpio_setpull(EXYNOS4_GPX0(0), S3C_GPIO_PULL_NONE);

gpio_free(EXYNOS4_GPX0(0));

上面的代码设置 GPIO 引脚 GPX0_0 为中断模式。

if(gpio_request(EXYNOS4_GPK1(0), "GPK1_0"))

{

printk(KERN_ERR "failed to request GPK1_0 for "

"USI control\n");

return err;

}

gpio_direction_output(EXYNOS4_GPK1(0), 1);

s3c_gpio_cfgpin(EXYNOS4_GPK1(0), S3C_GPIO_OUTPUT);

gpio_free(EXYNOS4_GPK1(0));

上面的代码设置 GPIO 引脚 GPK1_0 为输出模式,并且输出高电平。

iTOP-4412 的 GPIO 驱动就介绍到这里,大家有兴趣的话可以去内核里面细的

查看一下整个驱动的细实现。

Exynos4412 所有的 GPIO 都有固定的地址,为了方便操作这些 GPIO,Linux 内核

在 gpio-exynos4.h 里面定义了一些 GPIO 的宏,例如:

#define EXYNOS4_GPA0(_nr)  (EXYNOS4_GPIO_A0_START + (_nr))

#define EXYNOS4_GPA1(_nr)  (EXYNOS4_GPIO_A1_START + (_nr))

#define EXYNOS4_GPB(_nr)  (EXYNOS4_GPIO_B_START + (_nr))

.....................................

#define EXYNOS4_GPY5(_nr)  (EXYNOS4_GPIO_Y5_START + (_nr))

#define EXYNOS4_GPY6(_nr)  (EXYNOS4_GPIO_Y6_START + (_nr))

#define EXYNOS4_GPZ(_nr)  (EXYNOS4_GPIO_Z_START + (_nr))

这些宏就是把每个 GPIO 的地址做了一下封装,它的好处就是方便我们使用并且

根据宏的名字就能直观的知道是在操作哪个 GPIO。

Linux 内核中关于 GPIO 的驱动在 driver/gpio/gpio-exynos4.c 文件里面, 在这

个文件中 GPIO 驱动初始化入口函数是 exynos4_gpiolib_init, 因为这个文件同

时也支持 4210 的 GPIO,所以开始先初始化了一些通用的 GPIO (4412 和 4210 都

有的 GPIO) ,代码如下:

chip = exynos4_gpio_common_4bit;

nr_chips = ARRAY_SIZE(exynos4_gpio_common_4bit);

for (i = 0; i < nr_chips; i++, chip++) {

if (chip->config == NULL)

chip->config = &gpio_cfg;

if (chip->base == NULL)

pr_err("No allocation of base address for [common gpio]");

}

samsung_gpiolib_add_4bit_chips(exynos4_gpio_common_4bit,

nr_chips);

变量 exynos4_gpio_common_4bit 是一个数组, 定义了一些通用的 GPIO, nr_chips

是记录的 exynos4_gpio_common_4bit 数组里面素个数。

首先使用 for 循环遍历 exynos4_gpio_common_4bit 所有的素,为每个素的

config 结构赋值:

if (chip->config == NULL)

chip->config = &gpio_cfg;

gpio_cfg 是类型为 s3c_gpio_cfg 的结构体,这个结构体的定义如下:

struct s3c_gpio_cfg {

unsigned int  cfg_eint;

s3c_gpio_pull_t  (*get_pull)(struct s3c_gpio_chip *chip, unsigned

offs);

int    (*set_pull)(struct s3c_gpio_chip *chip, unsigned offs,

s3c_gpio_pull_t pull);

unsigned (*get_config)(struct s3c_gpio_chip *chip, unsigned offs);

int  (*set_config)(struct s3c_gpio_chip *chip, unsigned offs,

unsigned config);

};

通过上面的代码我们可以看到这个结构体里主要是一些函数指针,get_pull 是

获取 GPIO 的上拉状态,set_pull 是设置 GPIO 上拉或下拉的,set_config 是设

置 GPIO 的工作模式,例如:输出/输入/其他功能。下面我们来看看 gpio_cfg

变量的定义,如下:

static struct s3c_gpio_cfg gpio_cfg = {

.set_config  = s3c_gpio_setcfg_s3c64xx_4bit,

.set_pull  = s3c_gpio_setpull_exynos4,

.get_pull  = s3c_gpio_getpull_exynos4,

};

通过上面的代码,可以看到分别对 gpio_cfg 结构的三个函数指针赋值,这三个

函数 的 定义 是在 gpio-config.c 里面 实现 的 , 这个 文 件 在 内核 源 码

arch/arm/plat-samsung 目录下,这三个函数的作用就是根据传进来的参数,配

置 GPIO 相应的寄存器,从而实现对 GPIO 的操作。

然后 我们 回到 gpio-exynos4.c , 接 着看 下 面 的代 码, 完成 了

exynos4_gpio_common_4bit 中每个素的 config 结构赋值后, 接着会调用函数

samsung_gpiolib_add_4bit_chips(exynos4_gpio_common_4bit,  nr_chips) 来

向系统注册 GPIO 结构体。代码如下:

void  __init  samsung_gpiolib_add_4bit_chips(struct  s3c_gpio_chip  *chip,

int nr_chips)

{

for (; nr_chips > 0; nr_chips--, chip++) {

samsung_gpiolib_add_4bit(chip);

s3c_gpiolib_add(chip);

}

}

上面的代码主要有两个函数组成分别是 samsung_gpiolib_add_4bit(chip) 和

s3c_gpiolib_add(chip), 首先我们来看下 samsung_gpiolib_add_4bit(chip)函

数的实现:

void __init samsung_gpiolib_add_4bit(struct s3c_gpio_chip *chip)

{

chip->chip.direction_input = samsung_gpiolib_4bit_input;

chip->chip.direction_output = samsung_gpiolib_4bit_output;

chip->pm = __gpio_pm(&s3c_gpio_pm_4bit);

}

这个函数也是为函数指针赋值,direction_input 是设置 GPIO 为输入模式,

direction_output 是设置 GPIO 为输出。

s3c_gpiolib_add(chip)函数主要作用是给一些函数指针赋值,然后根据传进来

的参数把对应的 GPIO 的信息保存到 gpio_desc 结构里,gpio_desc 是内核里面

定义的一个全局变量,用来保存每个 GPIO 的信息。 至此 GPIO 的驱动初始化就完

成了,其他它主要完成的功能就是为每个 GPIO 的结构体里面的函数指针赋值,

最后把每个 GPIO 结构信息保存到全局变量 gpio_desc 里面。

上面已经完成了一些通用的 GPIO 驱动的初始化,我们在回到 gpio-exynos4.c,

下面是根据 CPU 的型号初始化 CPU 特定的 GPIO 了,代码如下:

/* Only 4210 GPIO part */

if (soc_is_exynos4210()) {

chip = exynos4210_gpio_4bit;

nr_chips = ARRAY_SIZE(exynos4210_gpio_4bit);

for (i = 0; i < nr_chips; i++, chip++) {

if (chip->config == NULL)

chip->config = &gpio_cfg;

if (chip->base == NULL)

pr_err("No allocation of base address [4210 gpio]");

}

samsung_gpiolib_add_4bit_chips(exynos4210_gpio_4bit,

nr_chips);

} else {

/* Only 4212/4412 GPIO part */

chip = exynos4212_gpio_4bit;

nr_chips = ARRAY_SIZE(exynos4212_gpio_4bit);

for (i = 0; i < nr_chips; i++, chip++) {

if (chip->config == NULL)

chip->config = &gpio_cfg;

if (chip->base == NULL)

pr_err("No allocation of base address [4212 gpio]");

}

samsung_gpiolib_add_4bit_chips(exynos4212_gpio_4bit,

nr_chips);

}

通过看上面的代码,初始化过程与前面介绍的初始化通用 GPIO 原理是一样的,

这里我们不在细介绍。对所有 GPIO 的初始化完成以后内核中的其他驱动模块

就可以方便的使用我们注册到 gpio_desc 里面的 GPIO 了。内核提供了几个全局

函数来操作这些 GPIO:

int gpio_request(unsigned gpio, const char *label)

void gpio_free(unsigned gpio)

int s3c_gpio_setpull(unsigned int pin, s3c_gpio_pull_t pull)

int s3c_gpio_cfgpin(unsigned int pin, unsigned int config)

int gpio_direction_input(unsigned gpio)

int gpio_direction_output(unsigned gpio, int value)

gpio_request 函数是申请 GPIO 操作, 根据传递进来的参数 gpio, 会去全局变量

gpio_desc 里面找到对应的 GPIO 结构,判断 desc 的标志位 flag 有没有被设置

FLAG_REQUESTED,如果有设置说明其他地方在使用这个 GPIO,程序返回-EBUSY

错误,如果没有设置就设置 flags 的标记为 FLAG_REQUESTED。

gpio_free 函数是释放 GPIO 操作,根据传递进来的参数,在 gpio_desc 全局变

量找到对应的 GPIO 结构,清除掉 desc 的 flag 标志变量的 FLAG_REQUESTED 位。

s3c_gpio_setpull 函数是设置 GPIO 的上拉或下拉的,变量 pull 的取值范围如

下定义:

#define S3C_GPIO_PULL_NONE  ((__force s3c_gpio_pull_t)0x00)

#define S3C_GPIO_PULL_DOWN  ((__force s3c_gpio_pull_t)0x01)

#define S3C_GPIO_PULL_UP  ((__force s3c_gpio_pull_t)0x02)

S3C_GPIO_PULL_NONE 是悬空

S3C_GPIO_PULL_DOWN 是下拉

S3C_GPIO_PULL_UP 是上拉

s3c_gpio_cfgpin 函数是设置 GPIO 的功能:输入/输出/其他功能,第二个参数

config 取值范围如下:

#define S3C_GPIO_INPUT  (S3C_GPIO_SPECIAL(0))

#define S3C_GPIO_OUTPUT  (S3C_GPIO_SPECIAL(1))

#define S3C_GPIO_SFN(x)  (S3C_GPIO_SPECIAL(x))

S3C_GPIO_INPUT 是输入模式,S3C_GPIO_OUTPUT 是输出模式,S3C_GPIO_SFN(x)

是其他模式,例如中断模式等。

gpio_direction_input 函数设置 GPIO 是输入功能。

gpio_direction_output 设置 GPIO 输出,第二个参数 value 取值 0 或 1,0 代表

输出低电平,1 代表输出高电平。

下面我们来看几个 GPIO 操作的例子:

if (gpio_request(EXYNOS4_GPX3(3), "MPU6050 INT"))

printk(KERN_WARNING  "MPU6050  INT(GPX3.3)  Port  request  error!!!\n");

else{

s3c_gpio_setpull(EXYNOS4_GPX3(3), S3C_GPIO_PULL_NONE);

s3c_gpio_cfgpin(EXYNOS4_GPX3(3), S3C_GPIO_SFN(0));

gpio_direction_input(EXYNOS4_GPX3(3));

gpio_free(EXYNOS4_GPX3(3));

}

上面的代码是设置 GPIO 引脚 GPX3_3 为输入模式,悬空。

err = gpio_request_one(EXYNOS4_GPX0(0), GPIOF_IN, "mcp251x_INT");

if (err) {

printk(KERN_ERR "failed to request mcp251x_INT\n");

return -1;

}

s3c_gpio_cfgpin(EXYNOS4_GPX0(0), S3C_GPIO_SFN(0xf));

s3c_gpio_setpull(EXYNOS4_GPX0(0), S3C_GPIO_PULL_NONE);

gpio_free(EXYNOS4_GPX0(0));

上面的代码设置 GPIO 引脚 GPX0_0 为中断模式。

if(gpio_request(EXYNOS4_GPK1(0), "GPK1_0"))

{

printk(KERN_ERR "failed to request GPK1_0 for "

"USI control\n");

return err;

}

gpio_direction_output(EXYNOS4_GPK1(0), 1);

s3c_gpio_cfgpin(EXYNOS4_GPK1(0), S3C_GPIO_OUTPUT);

gpio_free(EXYNOS4_GPK1(0));

上面的代码设置 GPIO 引脚 GPK1_0 为输出模式,并且输出高电平。

iTOP-4412 的 GPIO 驱动就介绍到这里,大家有兴趣的话可以去内核里面细的

查看一下整个驱动的细实现。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-29 21:36:50

iTOP-4412 开发板的 GPIO 是怎么操作的?的相关文章

学习嵌入式-迅为4412开发板的GPIO是怎么操作的?

Exynos4412所有的GPIO都有固定的地址,为了方便操作这些GPIO,Linux内核在gpio-exynos4.h里面定义了一些GPIO的宏 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com 例如: #define EXYNOS4_GPA0(_nr) (EXYNOS4_GPIO_A0_START + (_nr)) #define EXYNOS4_GPA1(_nr) (EXYNOS4_GPIO_A1_START + (

新手如何学习嵌入式开发板-迅为4412开发板

网站:http://www.topeetboard.com Q Q:2551456065 产品优势: 1. 涵盖当在嵌入式技术热点:Linux,Android,QT,Ubuntu系统 2. 专为iTOP-4412量身打造,手把手全视频讲义,让学习嵌入式ARM开发像单片机一样简单!3. 完善的售后支持:提供论坛.认证QQ. 当前ARM处理器参数对比: 4412开发板介绍: 1. iTOP-4412精英版:搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与超大

[学习开发板怎么选]迅为4412开发板帮你入门嵌入式

丰富选配模块 入门视频教程(购买后提供完整版高清教程)部分视频观看地址: [视频教程]iTOP-4412开发板之学习方法--致初学者 http://v.youku.com/v_show/id_XNzQ5MDA4NzM2.html [视频教程]三星Exynos 4412处理器开发要点 http://v.youku.com/v_show/id_XNjIwODA0MTY4.html [视频教程]iTOP-4412开发板之如何扩展不同型号LCD屏 http://v.youku.com/v_show/id

4412开发板和4418开发板接口区别说明

迅为iTOP-4412开发板与iTOP-4418开发板的区别对比,两款开发板可广泛适用于工控.智能家居.医疗.多媒体.安防.车载.金融.消费电子.手持设备.显示控制.教学.电力.通讯等领域. 4412开发板与4418开发板接口详细对比   iTOP-4412开发板(全能板) iTOP-4418开发板(全能板) 核心板参数 尺寸 SCP:6cm*7cm/POP:5cm*6cm 5cm*6cm CPU Exynos4412,四核Cortex-A9,主频为1.4GHz-1.6GHz Cortex-A9

迅为三星Exynos 4412开发板四核Cortex-A9ARM安卓linux开发板

开发板光盘资料包含:原理图(PDF格式).底板PCB(Allegro格式).驱动程序源码.芯片和LCD数据手册.开发环境.产品使用手册. 4412开发板简介: iTOP-Exynos4412开发板采用 Exynos4412 的主芯片,具有更高的主频和更丰富外设,配置 2GB 双通道 DDR3的内存及 16GB 存储,具有稳定性强.可靠性高,能适用于对性能和处理能力有更高要求的嵌入式系统应用场合. iTOP-Exynos4412开发板内置有无线 WIFI 模块.Bluetooth.GPS.Came

【开学季】自学嵌入式开发|四核开发板|4412开发板|ARM+Android+linux技术

淘宝店铺:迅为开发板http://arm-board.taobao.com 网站:http://www.topeetboard.com QQ咨询:2551456065 电话咨询:010-58957586 迅为4412开发板提供详细使用手册,丰富配套入门视频教程(不断更新),完善的售后体系,助你轻松入门,快速研发新产品. 核心板参数 尺寸 50mm*60mm 高度 连同连接器在内0.26cm CPU Exynos4412,四核Cortex-A9,主频为1.4GHz-1.6GHz 内存 1GB 双通

基于讯为4412开发板的Android开发流程

讯为4412开发板  使用三星2410芯片,基于arm9架构,由于自己电脑硬件的局限,只能跑Android4.0.3系统. 1.Uboot这个直接使用官方镜像烧写就可以了,一般情况不用去重复烧写. 略. 烧写命令:fastboot.exe flash bootloader u-boot-iTOP-4412.bin 2.linux Kernel 1)设备驱动 --字符设备驱动 --杂项设备驱动 --I2C设备驱动(两种模式 a,linux内部i2c体系 包括两部分:i2c设备驱动与i2c总线驱动,

4412开发板支持GPS高强度信号

三星Exynos 4412开发板支持GPS高强度信号,GPS信号强度可达50dbm 2012年,三星正式推出了自家的首款四核移动处理器Exynos 4412. 这款新Exynos A9 四核处理器,拥有4枚主频为1.4-1.6 GHz的Cortex-A9通用处理核心,拥有32/32 KB I/D Cache, 1 MB L2 Cache, 并且集成ARM Mali 400 MP图形处理核心,而且三星公司已将这颗图形处理器主频由此前的266MHz提升至400MHz: 采用32nm HKMG(高K金

[资料]学习必备嵌入式开发板-4412开发板ARM+Android+linux技术全覆盖

迅为4412开发板提供详细使用手册,丰富配套入门视频教程(不断更新),完善的售后体系,助你轻松入门,快速研发新产品. 4412开发板使用手册: 4412开发板配套入门视频教程 01-烧写.编译以及基础知识视频 02-嵌入式Linux视频 03-iTOP-4412开发板硬件设计指导视频 04-Android应用程序视频 05-Android应用教程 06-裸机程序实验文档以及工具文件 07-Linux-x86-Qt5.3.2以及QtE4.7.1应用视频 08-Linux驱动教程2015 核心板参数