linux平台内核配置及修改手册_第1页
linux平台内核配置及修改手册_第2页
linux平台内核配置及修改手册_第3页
linux平台内核配置及修改手册_第4页
linux平台内核配置及修改手册_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本手册所涉及的知识归属安凯技术(或经合作商使用),任何人 联系方安凯(广州):(86)-20-3221C13传真(86)-20-3221::电子邮箱主页http:以下表格对于本文档的版本变更做一个简要的说明。版本变更仅限于技术内容的变更,不包括版式、格式、句法等的变更。版说完成日期20129AK37内核的常见配置方 板级选 AK37板级选 启动参数配 ANYKA平 驱动配置及源码在内核中的位 Nand USB 内核GPIO库接口的使 AK37内核驱动修改和扩展方 频率配 USB-OTG- 修改电源控制管 新增Camera驱 GPIO按 Touch 整体架 新增lcd驱 内核的常见配置方法 级选BSP不同。例如:选AK37系列时编译的时候选取的BSP是arch/arm/mach-ak37/。AK37系列以AK3760ak3760_full_defconfig。详细也请参考此配置文件,通过把arch/arm/configs/ak3760_full_defconfig文件到kernel根,然后重新命名为.config.makeconfig命令即可以在图形界面下看到相关SystemType-ARMsystemtype(ANYKAAK98XX)-()ANYKAAK98XX板级选AK37板级选项linux中,板级配置对应配置某个板具有哪些功能,并且使用哪一款特定的。这一特定的型号在板级配置时定义。AK37系列以AK3760为例,具体的定义方法可以参考arch/arm/mach-ak37/Kconfig文件,下面给出板级的具体选项。SystemType-ANYKAAK37XXboards(SDK3760nandboot)---(X)SDK3760nandboot()SDK3760spiboot()SDK3751B当选择AK37系列下此项内内容后,代表内核在编译的时候选取的编译文件为arch/arm/mach-ak37/mach-sdk3760.c文件,这可以通过查看此下的Makefile文件得知。同时编译时也只会编译属于CONFIG_CPU_AK3760CONFIG_CPU_AK3760宏限定GPIO。 启动参数配置启动参数的配置又分为nand版本配置和SPI版本配置,对于AK37系列的绝大部分都支持nand版本和SPI版本启动,但AK3751B仅支持SPI版本。Bootoptions-(root=/dev/mtdblock0rwinit=/sbin/initmem=256Mconsole=ttySAK0,115200n8)DefaultkernelcommandstringSPIflashSPIinitramfs的文件路径,SPISPI中指initramfs的配置Generalsetup-[*]InitialRAMfilesystemandRAMdisk(initramfs/initrd)support(../rootfs/rootfs.initramfs)Initramfssourcefile(s)Bootoptions-nandflashSPIflash启动,内核的启动包括一些组件的初始化和相关配commandlinecommandline的参数进行赋值,(这些值如控制器台,内存的大小,内核驱动中的变量也可以通过这种方式传值)。现在有两种配置方式:动态方式和静态方式。优先采用动态的方式。linuxBSP开发手root=/dev/mtdblock0mtdblock0作为根文件系统使用(yaffs2文件系统烧录到mtdblock0分区)console=ttySAK0,115200n8设置输出控制台使用ttySAK0虚拟控制台,波特率为在紧跟在0x8000000的地址留出一块内存(0x1A00000,默认定为26M,用户根据需要修 AK37默认(0x400000) decoding 平 驱动配置及源码在内核中的位AK37各驱动在config中的配置位置以及驱动源码在内核中位 NandNandflashMTD设备,主要用来内核Image和文件系统。选择此功能后,用户将能对nandflash进行读写数据操作。 config选项的位置:<*>MemoryTechnologyDevice(MTD)support-<*>NANDDeviceSupport-<*>NANDFlashsupportforANYKA<*>ANYKANandFlashDMAMMC/SD卡是主要的外部器件,用在设备中。要使设备支持MMC/SD存储功能,必须选择。MMC/SD48MMCSDIO的检测分别分为GPIO检测,AD检测。另外SDIO驱动还有一种假设SDIO设备一直挂在SDIO接口上,这SDIOSDIOWIFISDIO接口上,但是并不对应config选项的位置:[*]ANYKAMMC/SD/SDIOCardInterface<*>MMC/SD/SDIOcardsupport-//选择MMC卡检测方式Detectmodeselectforsdcard(GPIOdetectmodeusedforsdiocard)---MMC/SDDatalineselect(Fourdataline)---//选择是否支持DMA方式MMC/SDDatatransportmodeselect(TransferdatabyL2FIFODMAmode)---<*>SDIOCardInterfaceDetectmodeselectforsdiocard(ADdetectmodeusedforsdiocard)--->SDIODatatransportmodeselect(TransferdatabyL2FIFODMAmode)--->USBUSBOTGusthostusbslave功能。Usb-otghost时不支持低速设备。USBOTG驱动在内核中的位置:drivers/usb/host/plat-anyka/otg-hshcd.c、usb-hc.c[*]USBsupport---> AnykaOTGUSBHigh-SpeedHCD AnykaOTGUSBUseDMADMA信),实现设备与pc机之间数据传输功能,这是设备都会支持的功能。对应config选项的位置:[*]USBsupport---<*>USBGadgetSupport-USBPeripheralController(AnykaUSBDevicePort)-AnykaUSBDevice SelectUDCDriverifusbotgas<M>USBGadgetWifi即无线网络,用来进行网络传输,市面已有多种支持wifiwifiPDK [*]Networkingsupport-[*]Wireless---[*]Wireless Wirelessextensionssysfs与网络协议相关的选项,ak98_sdk9805_defcofnig文件,[*]Networkingsupport-[*]TCP/IPnetworking[*]IP:multicasting[*]IP:kernellevel IP:DHCP I2C是一种总线标准,由两根线组成,SDA和SCL。I2CI2CI2CI2C设备请求数据传输最终都由这个驱动来完成传输操作。安凯平台既支持硬件I2C方式又支持软I2C<*>I2Csupport-[]AutoselectpertinenthelpermodulesI2CAlgorithms---><*>I2Cbit-banging I2CHardwareBussupport-→[*]AnykaI2CDriverI2CDriver(I2CHWController)---(X)I2CHW(X)I2CHW()I2CGPIOSW Sensor驱动在内核中的/configDeviceDrivers-<*>Multimediasupport-captureadapters-<*>aksensorsupport-<*>gc0308sensor//支持gc0308<*>ov2643sensor//支持ov7725由于,图像库,2D库在硬件编或2D硬件加速时需要用到大块连续的物理内存,所以提供一个物理内存管理模块PMEM来实现对物理内存的初始化,分配与。这片物理内存的空间就是从物理内存起始地址(0x8000000)开始保留的26M,这个值根据需求可修改,即如果未使用这么多的空间,可以将这个值改小。但目前AK37平台默认保留了4M。设置这片内存空间大小的方法请参面1.1.3小节。这个驱动提供了open(),release(),mmap(),ioctl()接口供库调用。而应用程序调用库 config选项的位置:[*]Miscdevices-[*]AndroidpmemUIO:TheUserspaceI/Olinuxuio设备(/dev/uioX,X0开始的数字)sysfs接口(/sys/class/uio/uioX,X0开始的数字)向应用提供 设备UIO2DUIOuio__codec.c提供了编设备的UIO驱动;uio_2D_accel.c2D设备的UIO驱动。默认已添加了编设备(/dev/uio0)如果需要使用2D设备(/dev/uio1)2DUIO驱动。添加设备的方法非常很简单,只需要在Aimer平台的devices.c,详细请参才arch/arm/mach-ak37/mach-sdk3760.carch/arm/mach-ak37/devices.c文件。驱动在内核中的位置:drivers/uio/uio__codec.c对应config<*>UserspaceI/Odrivers-<*> Codec<>Anyka2DGraphicHWaccelerate在人机交互中,一种是使用按键,另一种是使用触控的功能对设备进行写入和控制。这里提供的触控屏驱动就是实现触控的功能,通过点击屏幕就可以实现对设备的输入操作。可以使用外置的触控实现,也可以使用ADC的内置功能实现。用户可以选用其ADC的内置触控功能驱动:drivers/input/touchscreen/adc_ts.c对应config选项的位置:Inputdevicesupport-→[*]Touchscreens-→<*>AnykaADCGPIO-KEY/MATRIX-gpio按键驱动,GPIO-KEYGPIO。MATRIX-KEYBOARD是采用行列式的矩阵按键,并且还可以根据行是否接地增加了按2*3且根据硬件的连线(matrixgpio接线图)最大可以得到2*3+2这么多个键。AD按键的前提是处理器可用的GPIOGPIO按键来用于输入,此时依赖GPIO的功能做按键功能是远远做不到的。在这样的情况下,AD的功能来扩展按键,即通过不同的硬件分压得到多个按键。KEYPAD对 config选项的位置Inputdevicesupport-<*>Polledinputdeviceskeleton//ADKEY[*]Keyboards---<*>Anykagpio-keys<*>Anykamatrix-keypad<*>ogkeyboardgpioIOCTRLGPIO进行属性设置。属性包括设置GPIO的方向,设置GPIO输出高低电平,GPIO的电平,设置GPIO的中断极性,以及GPIO是否具有使能/上下拉。与1.2.7有所不同。config[*]Miscdevices-<*>Genericakgpiocustom1.3.12ACSB检测,当前电池电量及当前电量所占%比等这些功能,就是这个驱动来实现的,并且还包usbconfig<*>Powersupplyclasssupport-<*>AnykaBatterydriver1.3.13 的时钟供给系统计时。 具有闹钟功能,当系统待机后还具有自动唤醒功能config<*>RealTimeClock-<*>AKLCD/LCDLCDRGBMPU屏,LCDLCD显示。当开发者选择需要LCDLCD背光驱动。对应config选项的位置Graphicssupport-<*>Supportforframebufferdevices-<*>AnykaAK37LCDframebuffersupportDisplaydevicesupport LCDpanelTypeRGBpanelsupport)- (X)RGBpanel()MPU8bitpanelsupport()MPU16bitpanelsupportLCDpanelforAKboard(OTG-5180A4.3"480x272TFTLCDPanel)-→ 选择支持(X)OTG-5180A4.3"480x272TFTLCD()QiaodianQD043003C0-404.3"480x272TFTLCDPanel()InnoLuxAT043TN244.3"480x272TFTLCDPanel()AUOA050VW01-V55"WVGATFTLCD()ChiMeiLW700AT90097"WVGATFTLCDPanel()InnoLuxAT070TN927"WVGATFTLCDPanelAudio支持音频的输入/输出 使用MIC和Line-in的方式,放音使用扬声器和驱动在内核中的位置:sound/armak37_hal.csound/arm说明:ak37_hal.c直接操作操 寄存器的源码,对硬件进行抽象,提供接口<*>Soundcardsupport-<*>AdvancedLinuxSoundArchitecture-→[*]ARMsounddevices-→<*>AnykaAK37ADC/DACsoundHP/Speakerswitode(autoswitchinaudiodriver(default,forbothpm驱动提供系统待机唤醒功能,主要是延续电池的使用时间。原是是当系统没有工作 DeviceDrivers--->configSystemType-[*]AK37CPUPowerManagementAPMAPM的功能选项Powermanagementoptions-[*]PowerManagementsupport[*]SuspendtoRAMandstandby1.3.17内核GPIO库接口的使用GPIOGPIOGPIO(输入输出),设置GPIO是输出高电平还是低电平,获取GPIO的电平值,设置GPIOpull-up/pull-down功能,当GPIO作为中断使用,设置GPIO的中断极针对GPIO的属性,内核提供了一个公共的接口供内核开发使用。这套通用的口是通过调用各独立设置口是通过调用各独立设置GPIOarch/arm/mach-akxx/include/mach/gpio.h(akxxak98ak37)文件。另外也提供了一个设置GPIO具有某个组的功能,比如作为MMC/SDIO,NAND数据线的功现在介绍如何使用这个公共的设置GPIO的属性的接口的方法,分为所用结构体和接GPIO结构体结构体如下,用户如对某个GPIOGPIOstruct{intchar//GPIOchar//GPIOchar//GPIO输出值(高电平、低电平char//GPIOchar//GPIO中断GPIO接口调用#include这样就完成了对通用GPIO这样就完成了对通用GPIO属性的设置。.intpin_info= = = =-=.int_pol= 内核驱动修改和扩展方法本章主要介绍AK37各种常用驱动的修改方法。以AK3760为例:修改的板级文件为“arch/arm/mach-ak37/mach-电量检测和USB插拔ak37上,USB structi2c_gpio_platform_data背本节主要介 背光驱动相关的修改方法与struct_bl_data_backlight_data=.max_brightness255,//.dft_brightness= //noeffectivetoandroid,androidwillbesetto.high_limit=250, //highlimitofbrightnessindriver可调的最大亮度,可更改这.low_limit= //lowlimitofbrightnessin._div=MMC/SD与频率配置MMC/SDSDIOdrivers/mmc/host/plat-anykammc_sd.csdio.c文件中如下代码中fmax变量:下staticunsignedintfmax= 有关APM变频模块频率配置MMC/SDSDIOdrivers/mmc/host/plat-anykammc_sd.csdio.c文件中如下代码中fmax变量:下staticunsignedintfmax= 有关APM变频模块的配置,用户无需 Wifiusbhostusb设备供电,wifigpio设置为-1,表示不需要其他途径控制供电。否则需要按照类.gpio_on== =- = =.int_pol=-.gpio_off= = =- = =.int_pol=-.power_on_delay.power_on_delay=.power_off_delay= USB-otg-usbhostusbON/OFF设置需要修改的是mach-sdk3760.cstructakotghc_usb_platform_dataakotghc_plat_data的结构.gpio_init=.gpio_pwr_on=.pulldown=.pullup=-.value=.dir=.int_pol=-.gpio_pwr_off=.pulldown=.pullup=-.value=.dir=.int_pol=-.switch_onboard=.pin=-.switch_extport=.pin=-(同一时间只能用其中之一个),对其接口进行切换控制(.switch_onboard和.switch_extport的.pinGPIO)usb接口并没有这样的需求时,需要把分把.switch_onboard和.switch_extport的.pin值赋值为-1,其它参数可不赋值,如上所示,否这若有这样的需求可.gpio_pwr_on=.pin=.gpio_pwr_off=.pin=.switch_onboard=.pin=.pulldown=.pullup=-.value=.dir=.int_pol=-.switch_extport=.pin=.pulldown=.pullup=-.value=.dir=.int_pol=-修改电源控制管脚Ak37修改ak_soc_camera_info变量的pin_powerGPIO新增Camera驱动drivers/media//plat-anyka,下camera_xxxx.ccamera_xxxx.hxxxxcamera驱动中修改,比如用户可以拷贝gc0308的驱动:cp-Rvcamera_gc0308.hcamera_xxxx.hcp-Rvcamera_gc0308.ccamera_xxxx.c然后在修改camera_xxxx.h和camera_xxxx.c文件,头文件中主要定义了各种参数,用户可参照camera 进行增加修改和删除,源文件中是camera接口的实现,用户可参照原有的文件和进行相应的修改。 configtristate"xxxxsensorsupport"dependsonLINUX_AKSENSORThisisaxxxxsensordriver3) 下的Makefile文件obj-$(CONFIG_SENSOR_XXXX)+=GPIO按键staticstructak_gpio_keys_buttonathena_buttons[]={====staticstructak_gpio_keys_buttonathena_buttons[]={====.debounce_interval===-==.int_pol={=KEY_POWER,//定义电==="power-key.debounce_interval= =1,//配置成 =- = =.int_pol=AD按键及检测ADSDIO、SD卡、耳机检测,ak37上默用户需要根据实际情况删除structadgpio_keyadkey[][8]和structmulti_addetectmulti_det[]数组元素。比如,假设用户开发板上不需要KEY_VOLUMEUP按键,可把adkeyKEY_VOLUMEUPadsd卡检测,可把adkey数组中其他几种情况的组合删掉,同时删掉multi_det中对应的元素。Touch .irq=.adc1_clk= //Unit:Hz, mendedadc1clk对于内核里面已经支持的lcd,只需要 config中选择相应的就可以了。参整体架构 Wrap适配层:安凯实现的一套与屏幕无关的适配层,目的是framebuffer驱动的一座各款屏幕,与rgb新增lcd驱动在lcd_TTT_XXX.c文件,打开这个文件可以看到,里面所有的函数名和变量名都还有lcd型号的字样,可以先把这个全部改成新增的型号;修改变量SUPPORT_RGB_XXX_TABLElcdwrap_lcd.h中T_RGBLCD_INFOXXX_function_handler里面剩下的参数,参数定义查看wrap_lcd.h中T_LCD_FUNCTION_HANDLER结构体的定义。lcd_TTT_XXX.c文件,打开这个文件可以看到,里面大部分的函数名和变量名都lcdXXX_function_handlerwrap_lcd.hT_LCD_FUNCTION_HANDLER结构体的定义;根据修改初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论