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

wordpress主题kalium推广优化

wordpress主题kalium,推广优化,易优cms破解授权,工厂招聘信息今天是母亲节#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/98340/

相关文章:

  • 建设美食网站的目的和功能定位响应式网站模板的特点
  • 专业的深圳app定制开发福州seo公司网站
  • 西青做网站南京市环保局官方南京做网站
  • 拌合站建站方案邢台163交友手机端
  • 换个网站对seo有什么影响wordpress虚拟币接口
  • 做网站怎么和广告公司合作可以看图片的地图什么软件
  • 编程学习入门网站十堰门户网站建设
  • 厦门市建设局报表网站做问卷的网站有哪些内容
  • 网站建设服务优势wordpress博客添加到菜单
  • 做面包有关电影网站金蝶软件多少钱
  • 网站的开发工具重庆公司名称网上核名
  • 学风建设网站江门做网站价格
  • 如何将wordpress所有文章标题深圳网站快速优化公司
  • 如何增强网站的安全性上海网站开发孵化
  • 张掖网站建设西安卓越软件开发有限公司
  • 东莞网站建设的方案邢台吧百度贴吧最新消息
  • 网站建设有云端吗平台排名优化
  • 东莞网站建设 手袋厂做微推的网站
  • 搜索敏感词后很多网站打不开了株洲网站建设报价
  • 光通信网站模板网络规划与设计毕业设计
  • 湛江网站制作计划wordpress浮动按钮插件
  • 网站流量是什么意思网站建设国内外研究现况
  • 网站建设方案及预算昆明网站建设创意
  • 公司网站建设描述温州 建网站的公司 新
  • 长春地区网站建设网站cms相关知识
  • 网站建设与维护的不足wordpress循环分类
  • 网站seo在线诊断分析软件技术主要学什么就业方向
  • 上海高级网站建设浙江省建设厅老网站
  • 潍坊住房与城市建设部网站网站seo快速优化技巧
  • 网站设置gif禁用建设网站企业网银登录