最近正在将800X480的设备修改成1024X600,算了一下,

1024X600X4X2需要4M的framebuffer空间,其中4代表一个像素32位色的Byte数,

2代表双framebuffer,LCD驱动程序中,使用dma_alloc_coherent来分配缓冲区

dma_alloc_coherent分配缓冲区收到MAX_ORDER的制约,MAX_ORDER默认值是11

所以,dma_alloc_coherent分配的最大DMA空间只能小于2M,为了支持

4M甚至更大的DMA空间,需要做以下修改:

1. 修改arch/arm/configs/am335x_evm_android_defconfig文件,将

CONFIG_FORCE_MAX_ZONEORDER=11

修改为:

CONFIG_FORCE_MAX_ZONEORDER=12

也可以修改arch/arm/Kconfig中,将config FORCE_MAX_ZONEORDER的

default修改为12,我用的就是这种方法,因为发现修改am335x_evm_android_defconfig没起作用

2. 修改arch/arm/configs/am335x_evm_android_defconfig文件,将

CONFIG_FB_DA8XX_CONSISTENT_DMA_SIZE 4

修改为:

CONFIG_FB_DA8XX_CONSISTENT_DMA_SIZE 8

3.重新配置并编译内核

也可参考以下链接:

http://e2e.ti.com/support/arm/sitara_arm/f/791/t/189862.aspx

4.编译烧写到NandFLash后,系统启动不了,出现以下错误:

pvrsrvkm: disagrees about version of symbol contig_page_data

这是由于pvrsrvkm.ko等相关的内核模块没有在上述修改后重新编译造成的,

解决办法是:

使用以下命令清除sgx旧的编译数据:

cd hardware/ti/sgx

make OMAPES=4.x ANDROID_ROOT_DIR=/home/skwiki/AKHMI_201309/ak2_ics clean

其中,ANDROID_ROOT_DIR是Android源码所在目录,继续输入以下命令:

make OMAPES=4.x BUILD=release all_km ANDROID_ROOT_DIR=/home/skwiki/AKHMI_201309/ak2_ics

我在编译的时候遇到这个问题:

cp: cannot stat  .../binary2_omap4430_android_release/target/pvrsrvkm.ko

我发现编译后生成的pvrsrvkm.ko存在于out/target/product/am335xevm/target/kbuild目录中,

于是我修改目录hardware/ti/sgx中的Makefile.KM.Android文件,大概在35行,将:

else ifeq ($(OMAPES),4.x)

......
@echo "copying the sgx kernel modules to $(GFX_REL_ES4_LIB_SRCPATH_ANDROID)"
@cp -rf $(GFX_KERNMOD_SRCPATH)/eurasiacon/binary2_omap4430_android_release/target/pvrsrvkm.ko
 $(GFX_REL_ES4_LIB_SRCPATH_ANDROID)/.
@cp -rf $(GFX_KERNMOD_SRCPATH)/eurasiacon/binary2_omap4430_android_release/target/omaplfb.ko
 $(GFX_REL_ES4_LIB_SRCPATH_ANDROID)/.
修改为:

else ifeq ($(OMAPES),4.x)
......
@echo "copying the sgx kernel modules from $(ANDROID_ROOT)/out/target/product/$(TARGET_PRODUCT)/target/kbuild"
@echo "copying the sgx kernel modules to   $(GFX_REL_ES4_LIB_SRCPATH_ANDROID)"
@cp -rf $(ANDROID_ROOT)/out/target/product/$(TARGET_PRODUCT)/target/kbuild/pvrsrvkm.ko $(GFX_REL_ES4_LIB_SRCPATH_ANDROID)/
@cp -rf $(ANDROID_ROOT)/out/target/product/$(TARGET_PRODUCT)/target/kbuild/omaplfb.ko $(GFX_REL_ES4_LIB_SRCPATH_ANDROID)/
修改完毕以后,在使用以下命令进行重新编译:

make OMAPES=4.x BUILD=release all_km ANDROID_ROOT_DIR=/home/skwiki/AKHMI_201309/ak2_ics

严谨起见,我们在Android源码目录下面重新编译Android源码,并生成ubi文件系统。

AM335X 分配大于4M的framebuffer相关推荐

  1. MongoDB文件操作(支持大于4M数据)

    // MongoDB连接串,以[mongodb://]开头.这里,我们连接的是本机的服务 string connectionString = "mongodb://localhost&quo ...

  2. mysql一次更新内容大于4M时报错修改max_allowed_packet变量

    mysql更新时报错: Packet for query is too large (8479926 > 4194304). You can change this value on the s ...

  3. linux系统2g内存,linux下分配大于2g内存的问题(c++)

    linux下分配大于2g内存的问题(c++) 答案:5  信息版本:手机版 解决时间 2020-07-26 16:35 已解决 2020-07-25 20:51 机器是64位系统linux,但好像最大 ...

  4. JAVA之JVM之内存分配与回收策略(二)

    前言 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数 ...

  5. Java虚拟机7:内存分配原则

    前言 对象的内存分配,往大的方向上讲,就是在堆上分配,少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节决定于当前使用的是哪种垃圾收集器组合,当然还有虚拟机中与内存相关的参数 ...

  6. JVM之内存分配与回收策略

    JVM之内存分配与回收策略 来源 https://www.cnblogs.com/xiaoxi/p/6557473.html JVM分代垃圾回收策略的基础概念 来源 https://www.cnblo ...

  7. Linux内核常见分配函数

    1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...

  8. Linux内核中常见内存分配函数

    1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...

  9. Linux内核中内存分配函数

    1.原理说明 Linux内核 中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示.四级页表分别为 ...

最新文章

  1. AI一分钟 | 贾跃亭宣布FF开工,并在京沪展开招聘,回国在望?;亚马逊CEO贝佐斯搭伴波士顿动力机器狗参会
  2. 90 后女科学家,四年完成清华大学硕博连读,解决多个世界级难题
  3. python中requests库的用途-python中requests库session对象的妙用详解
  4. Servlet--HttpServletRequest一些不常用的方法
  5. TS基础2(类)-学习笔记
  6. 高度平衡二叉树的构建_数据结构与算法系列(十六)平衡二叉树的构建实现过程演示...
  7. [电影]十七岁的单车
  8. ElasticSearch学习(五):数据导入之Logstash
  9. Windows资源监控工具汇总
  10. JAVA代码生成器源码-基于SSM架构
  11. PythonSPSS完成空气质量状况的指数(AQI)分析
  12. MCU 8080规格LCD屏斜线问题——Tear功能
  13. 假定在使用CSMA/CD协议的10Mbit/s以太网中某个站在发送数据时检测到碰撞,执行退避算法时选择了随机数r=100.试问这个站需要等待多长时间后才能再次发送数据?如果是100Mbit/s的以太网
  14. eel+python 开发html5跨平台桌面应用1
  15. 广告主选择在今日头条推广的优势有哪些?头条搜索广告怎么做?
  16. windows下 搭建 wxWidgets 开发环境
  17. 数字城市的意义有哪些?如何构建数字城市?
  18. 实习随笔2(独自乘车南下深圳)
  19. PowerPoint Quick Tips PowerPoint快速提示 Lynda课程中文字幕
  20. TRACY自己学英语的5W三七法则

热门文章

  1. web编程 模块1 html,PYcore python programming笔记C20 Web编程
  2. mysql c webservice_如何编写webservice c
  3. 第11章 进入保护模式
  4. python安装依赖失败_python执行安装第三方依赖numpy失败:error: Unable to find vcvarsall.bat...
  5. hive 如何将数组转成字符串_教你如何将Power Logic的原理图转成Orcad的原理图
  6. Hive中COUNT的高级用法(条件过滤等)
  7. IOS多线程之Block编程
  8. 【LuoguP3038/[USACO11DEC]牧草种植Grass Planting】树链剖分+树状数组【树状数组的区间修改与区间查询】...
  9. Oracle数据库sql调优
  10. 进阶学习js中的执行上下文