当前位置: 首页 > news >正文

六安seo曝光行者seo珠海seo快速排名

六安seo曝光行者seo,珠海seo快速排名,太原建设公司网页模板,高新区区建设局网站今天是母亲节#xff0c;首先祝各位读者的母亲节日快乐#xff0c;祝你们的母亲年轻健康。母亲节是一个亘古的话题#xff0c;我本来想写个文章#xff0c;但是想起来这周就一个周末#xff0c;要花点时间陪下家人#xff0c;昨天我们老大开会#xff0c;特别说了#… 今天是母亲节首先祝各位读者的母亲节日快乐祝你们的母亲年轻健康。母亲节是一个亘古的话题我本来想写个文章但是想起来这周就一个周末要花点时间陪下家人昨天我们老大开会特别说了有时间多陪陪家人我脑子一转今天就一直陪着楠哥各种玩。晚上回来看看笔记写了这个技术文章ioremap是一个属于被遗忘的技术知识点可能我做Android 驱动没用上也就疏忽了像内核通知链一些冷门的技术还偶尔用一下。内存管理是一个经久不衰的话题从段式管理到页式管理已经过去很久了页式管理也已经有了好长好长时间了使用Linux内核的操作系统已经从更新了很多不同的版本。不同的CPU体系对外设IO端口物理地址的编址方式也不同分为I/O映射方式I/Omapped和内存映射方式Memorymapped。以X86为例X86为外设专门实现有单独的地址空间可以称为「I/O地址空间」或「I/O端口空间」这个是独立与CPU和RAM物理地址空间所有外设的IO端口均在这一空间。CPU通过设立专门的IN和OUT指令来访问这一空间中的地址单元即I/O端口这就是所谓的“I/O映射方式”I/Omapped。和RAM物理地址空间相比I/O地址空间通常都比较小如x86 CPU的I/O空间就只有64KB00xffff。这是「I/O映射方式」的一个主要缺点你可以通过cat /proc/ioports去查看IO port空间的地址资源分配情况是以树状结构显示。这个源于x86平台的设计思想目前基本不用了获取这些资源的函数接口如request_region和ioremap。像用户空间一样内核也是通过页表访问内存很多人对页表理解不是很透彻你要是说他复杂也是非常复杂但是你说要是简单也很简单可以理解成一个图书的目录有了这个目录就可以知道什么内存地址存放了什么东西以后要是想存新的东西进去就在原来的目录表里面进行更新。但是我们使用的外设比如是一个光感传感器我们需要控制这个光感传感器那就需要读写这个光感传感器的I2C寄存器如果内核代码需要像访问内存一样来访问这个光感设备呢我们这时候就需要首先设置一个适当的内核页表映射。这时候我们就需要使用 ioremap()这个函数经过这个函数还衍生了其他很多变种函数我不知道为什么要用变种这个词如果有其他词语可以留言一起讨论下毕竟一次好的词语可以加深我们的印象。具体可以看代码arch/arm/mm/ioremap.c 里面有很多相近似的函数。函数参数含义// 功能将物理地址映射为虚拟地址 // 参数1需要映射的物理地址 // 参数2需要映射的地址长度 // 返回值该函数返回映射后的内核虚拟地址(3G-4G). 接着便可以通过读写该返回的内核虚拟地址去访问之这段I/O内存资源。 简单的实例代码void led_on(void) {void *reg_base;unsigned int temp; reg_base  ioremap(0x1212, 4);temp  __raw_readl(reg_base); temp  ~(0xff12);temp | (0x1112);__raw_writel(temp, reg_base); } #但是内核没几个地方用这个函数我在内核里面搜了下这个函数在内核里面并没有几个地方用到的。特别是我们最近做MTK方案和RK方案里面的触摸屏驱动下面没使用到。但是音频platform部分却还有使用的地方。用了一个新的转换方式 /* ioremap to BT HW register base address */BTSYS_PKV_BASE_ADDRESS  (void *)btsys_pkv_physical_base;BTSYS_SRAM_BANK2_BASE_ADDRESS  (void *)btsys_sram_bank2_physical_base;bt_hw_REG_PACKET_R  BTSYS_PKV_BASE_ADDRESS  cvsd_mcu_read_offset;bt_hw_REG_PACKET_W  BTSYS_PKV_BASE_ADDRESS  cvsd_mcu_write_offset;bt_hw_REG_CONTROL  BTSYS_PKV_BASE_ADDRESS  cvsd_packet_indicator;pr_debug([BTCVSD probe] BTSYS_PKV_BASE_ADDRESS  %p BTSYS_SRAM_BANK2_BASE_ADDRESS  %p\n,BTSYS_PKV_BASE_ADDRESS, BTSYS_SRAM_BANK2_BASE_ADDRESS);return snd_soc_register_platform(pdev-dev, mtk_btcvsd_rx_soc_platform);/*使用*/kal_int32 i;kal_uint16 pv;kal_uint8 *pSrc;kal_uint8 *pPacketBuf;unsigned long flags;unsigned long connsys_addr_rx, ap_addr_rx;LOGBT(%s() btsco.pRX-iPacket_w%d\n, __func__, btsco.pRX-iPacket_w);connsys_addr_rx  *bt_hw_REG_PACKET_R;ap_addr_rx  (unsigned long)BTSYS_SRAM_BANK2_BASE_ADDRESS  (connsys_addr_rx  0xFFFF);LOGBT(%s connsys_addr_rx0x%lx,ap_addr_rx0x%lx\n,__func__, connsys_addr_rx, ap_addr_rx);pSrc  (kal_uint8 *)ap_addr_rx;LOGBT(%s uPacketLength%d,uPacketNumber%d, btsco.uRXState%d\n,__func__, uPacketLength, uPacketNumber, btsco.uRXState);AudDrv_BTCVSD_DataTransfer(BT_SCO_DIRECT_BT2ARM, pSrc, btsco.pRX-TempPacketBuf,uPacketLength, uPacketNumber, btsco.uRXState);LOGBT(%s AudDrv_BTCVSD_DataTransfer DONE!!!,uControl0x%x,uLen%d\n, __func__, uControl, uLen); #查看系统当前的内存映射/proc/iomem这个文件记录的是物理地址的分配情况记得要查看需要使用root权限。这些地址范围是通过 requset_mem_region 函数申请得到的。weiqifa0weiqifa-System-Product-Name:~$ sudo cat /proc/iomem [sudo] password for weiqifa0: 00000000-00000fff : Reserved 00001000-00057fff : System RAM 00058000-00058fff : Reserved 00059000-0009efff : System RAM 0009f000-000fffff : Reserved000a0000-000bffff : PCI Bus 0000:00000c0000-000cffff : Video ROM000f0000-000fffff : System ROM 00100000-b77eefff : System RAM b77ef000-b7828fff : ACPI Tables b7829000-b7bc9fff : System RAM b7bca000-b7bcafff : ACPI Non-volatile Storage b7bcb000-b7bcbfff : Reserved b7bcc000-c492efff : System RAM c492f000-c61b9fff : Reserved c61ba000-c61cefff : ACPI Tables c61cf000-c62ccfff : System RAM c62cd000-c65f4fff : ACPI Non-volatile Storage c65f5000-c7795fff : Reserved c7796000-c77fefff : Unknown E820 type c77ff000-c77fffff : System RAM c7800000-c7ffffff : Reserved c8000000-f7ffffff : PCI Bus 0000:00c8000000-c81fffff : PCI Bus 0000:05c8200000-c83fffff : PCI Bus 0000:05e0000000-efffffff : PCI Bus 0000:01e0000000-efffffff : 0000:01:00.0ioports主要显示IO端口的地址范围使用request_region( )分配I/O端口地址范围会显示在这里。weiqifa0weiqifa-System-Product-Name:~$ sudo cat /proc/ioports 0000-0cf7 : PCI Bus 0000:000000-001f : dma10020-0021 : pic10040-0043 : timer00050-0053 : timer10060-0060 : keyboard0064-0064 : keyboard0070-0077 : rtc00080-008f : dma page reg00a0-00a1 : pic200c0-00df : dma200f0-00ff : fpu00f0-00f0 : PNP0C04:000290-029f : pnp 00:0003f8-03ff : serial0680-069f : pnp 00:020800-087f : pnp 00:03 0cf8-0cff : PCI conf1 0d00-ffff : PCI Bus 0000:00164e-164f : pnp 00:021800-18fe : pnp 00:021800-1803 : ACPI PM1a_EVT_BLK1804-1805 : ACPI PM1a_CNT_BLK1808-180b : ACPI PM_TMR1850-1850 : ACPI PM2_CNT_BLK1854-1857 : pnp 00:051880-189f : ACPI GPE0_BLK2000-2fff : PCI Bus 0000:05d000-dfff : PCI Bus 0000:04d000-d0ff : 0000:04:00.0e000-efff : PCI Bus 0000:01e000-e0ff : 0000:01:00.0f000-f01f : 0000:00:1f.4f020-f03f : 0000:00:17.0f020-f03f : ahcif040-f043 : 0000:00:17.0f040-f043 : ahcif050-f057 : 0000:00:17.0f050-f057 : ahcife00-fefe : pnp 00:08ffff-ffff : pnp 00:02ffff-ffff : pnp 00:02ffff-ffff : pnp 00:02 weiqifa0weiqifa-System-Product-Name:~$#总结ioremap 这些曾经用起来很不错或者说是设计者设计的时候觉得很不错的东西现在突然被遗忘我认为很大程度是因为设计的时候允许的地址范围太小也就是因为太小要加新的东西总是畏首畏尾。  回复「 篮球的大肚子」进入技术群聊回复「1024」获取1000G学习资料PS想加入技术群的同学加了我好友后就给我发「篮球的大肚子」这句话有可能机器人打瞌睡可以多发几次不要发与技术无关的消息或者推广。
http://wiki.neutronadmin.com/news/43107/

相关文章:

  • 广州 网站 建设 制作贵州安顺住房城乡建设网站
  • 有关网站设计与制作的论文上海闵行区房价
  • 巧克力网站建设需求分析那个网站可以找人做设计师
  • 做收费网站一个网页的制作
  • 福州电商网站建设大型网站过程
  • 做网站竟然不知道cms广州建设企业网站
  • 苏州网站建站推广智慧团建登录入口官方网站
  • 学习网站建设建议调查问卷网站关键词如何快速上首页
  • 网站后台无ftp永久短链接
  • 深圳设计网站的公司wordpress文章后缀
  • 百度站长平台怎么用网站建设宽度
  • 如何添加网站为信任站点企业网络设计与实现毕业设计
  • 房地产网站怎么推广科技备案企业网站
  • 网站建设以后主要做什么自建网站平台有哪些
  • 如何才能做好品牌网站建设哈尔滨建设工程信息招标
  • 中律之窗网站建设如何做赚钱的网站
  • 有用unity做网站的吗网站建设大致价格2017
  • 搜索关键词可以过得网站东莞网站制作哪家最便宜
  • 哔哩哔哩网站开发图片wordpress更改后台进入默认页面
  • 网站建设财务分析给公司做网站多少钱
  • 便宜做外贸网站手机p2p网站开发
  • 山东网站建设开发维护网站建设 设计业务范围
  • 网站域名查询石家庄网页设计的公司
  • 台州服务网站wordpress58同城主题
  • 图书馆评估定级关于网站建设标准建筑室内设计公司
  • 网站欢迎页面在线设计网站虚拟主机是什么
  • 桂林网站制作培训学校互联网服务商
  • 泰安市做网站的公司网络服务网站建设
  • 网站的制作步骤包括德阳高端网站建设
  • 嘉定网站建设哪家便宜房产信息查询系统官方网站