使用IO映射的方式获取tiny4412板子上的ID号
在以前的文章中,有一篇
基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
#if 0
. io地址:
. 静态映射:
//这个头文件与平台相关,不同平台对应不同的gpio.h,也就是有不同的配置信息
arch/arm/mach-exynos/include/mach/gpio.h
gpio ==> S3C64XX_GPx(n)
EXYNOS4X12_GPM0()
EXYNOS4_GPD0()
int gpio_request(gpio, "name"); 申请;
void gpio_free(gpio); 撤销;
int gpio_direction_output(gpio, dat); 配置为输出, 输出1/0;
int gpio_direction_input(gpio); 配置为输入, 输入1/0;
int s3c_gpio_cfgpin(gpio, S3C_GPIO_SFN(con)); 配置为con;
void gpio_set_value(gpio, dat); 输出1/0;
int gpio_get_value(gpio); 输入1/0;
irqnum = gpio_to_irq(gpio); gpio <==> irqnum
MACH_TYPE_TINY4412
/* Initial IO mappings */
static struct map_desc exynos_iodesc[] __initdata = {
{
.virtual = (unsigned long)S5P_VA_CHIPID,
.pfn = __phys_to_pfn(EXYNOS_PA_CHIPID),
.length = SZ_4K,
.type = MT_DEVICE,
},
};
. 动态映射:
virt = ioremap(phys, size); //vmalloc_area
iounmap(virt);
//将虚拟地址转化为32位整型数
ioread32(virt);
iowrite32(val, virt);
//将虚拟地址转化为16位整型数
ioread16();
iowrite16();
//将虚拟地址转化为8位整型数
ioread8();
iowrite8();
#endif
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/atomic.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/kthread.h>
#include <linux/slab.h>
//和IO相关的头文件
#include <linux/io.h>
//板子ID的物理地址 0x10000000 -----> 通过4412的手册查询到
#define CHIP_ID 0x10000000
int test_init(void)
{
int ret;
unsigned int *virt = NULL;
printk("test init\n");
//将CHIP_ID的物理地址映射成虚拟地址,分配4个字节的大小给它
virt = ioremap(CHIP_ID, 4);
//如果映射完成之后,virt指针为空,返回错误码
if(IS_ERR_OR_NULL(virt))
{
ret = -EIO;
goto ERROR_map;
}
//打印虚拟地址
printk("virt = %p\n", virt);
//打印物理地址
printk("CHIP_ID = %x\n", CHIP_ID);
//将虚拟地址转化为32位整型数
printk("*virt = %x\n", ioread32(virt));
//解除地址映射
iounmap(virt);
return 0;
ERROR_map:
return ret;
}
void test_exit(void)
{
printk("test exit\n");
}
module_init(test_init);
module_exit(test_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("yangyx");
MODULE_VERSION("1.1");
使用IO映射的方式获取tiny4412板子上的ID号的更多相关文章
- 织梦dedecms获取当前内容页栏目id号的方法
一,可在内容模板中直接这样写{dede:field.typeid/} 可显示本栏目的id 二,也可这样写 {dede:type}[field:ID /]{/dede:type} . 三, 如果是在{ ...
- 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号
每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含着CPU的生产日期,版本号,型号等等,那么,在我们的这款友善之臂Tiny4412的板子上,我的这个CPU的ID又是多少呢?从我 ...
- 如何获取板子上独有的ID号EXYNOS4412/Imx6ul【转】
本文转载自:http://blog.csdn.net/u010871058/article/details/75637175 每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含 ...
- springboot整合mybatis(映射文件方式和注解方式)
springboot作为一个微服务框架,给我们开发人员提供极大的便利,秉着约定大于配置的原则,通过starter包的形式为我们做了许多默认的配置,在进行数据持久化到关系型数据库时,我们一般都会首选sp ...
- 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法
spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...
- linux驱动之中断方式获取键值
linux驱动之中断方式获取键值 ----------------------------------------------------------------------------------- ...
- 基于uFUN开发板的心率计(一)DMA方式获取传感器数据
前言 从3月8号收到板子,到今天算起来,uFUN到手也有两周的时间了,最近利用下班后的时间,做了个心率计,从单片机程序到上位机开发,到现在为止完成的差不多了,实现很简单,uFUN开发板外加一个Puls ...
- java 利用HttpURLConnection方式获取restful格式的服务数据
/** * @Author: * @Description:利用HttpURLConnection方式获取restful格式的服务数据 * @Date: */ private static List& ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
随机推荐
- 如何将dtb反编译成dts
点击打开链接 由于device tree会将一个node的信息分布在各个文件里,查看起来很不方便,比如如下例子,ldb在三个文件中都有配置: imx6qdl-sabresd.dtsi: [plain] ...
- Cocos2D:变换(transforms)在图形编程中扮演的角色
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...
- iOS7编程Cookbook中例15.8中一个小问题
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 该书的15.8例子标题为Editing Videos on a ...
- Android水印相机
本篇文章实现的水印相机,类似于qq空间中的水印相机功能,因之前看过一个demo上实现了一个简陋的水印相机功能,觉得挺有意思,就在此基础上进行了修改,优化和完善,并增加了部分功能,使之更接近于qq水印相 ...
- SQL Server SA 最佳实践(也许不仅仅是翻译)
老实说,本文主要部分是翻译的,并且由于英语水平的问题,我没有完全翻译,有些我觉得不重要的就跳过了,目前看来应该八九不离十,或者说不会影响最终效果,对于英语水平好的读者,可以自行查看原文.但这一年里面我 ...
- iOS中 Realm错误总结整理 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 一.错误信息:Attempting to modify object outside of a write tra ...
- 修改android应用包名
由于项目需要,要修改已经开发好的应用包名,这本身很简单,但是如果你没找到门道,可能会白白浪费许多时间. 修改包名有三个地方要改,这三个地方的修改一定要按顺序来,否则你可能会遇到许多不必要的麻烦. 1. ...
- python的subprocess:子程序调用(调用执行其他命令);获取子程序脚本当前路径问题
python当前进程可以调用子进程,子进程可以执行其他命令,如shell,python,java,c... 而调用子进程方法有 os模块 参见:http://blog.csdn.net/longshe ...
- [C]simple code of count input lines,words,chars
This is a simple C program which can count input lines, words and chars. But the number of words are ...
- android分包方案
当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT 2. 方法数量过多,编译时 ...