基本目录结构和功能 (amlogic open linux)----学习笔记

Kernel/ARCH/ARC目录
•ARC架构相关代码
•[Arch-apollo-h]:Apollo-h的相关基本硬件初始化;
•[Kernel]:中断,线程,硬件Cache等
•[Mm]:内存和MMU,Cache的硬件管理
•[Proc/arc700]:硬件启动代码,中断向量表,系统调用向量表;
•[Boot]:用来生成bootloader识别的Image;
•[BSP]:开发板相关目录的一个连接,在编译时生成


Kernel/include目录
•[asm-arc]:arc平台的头文件目录;
•[Asm-generic]:公共的硬件平台头文件;
•[Linux]:linux系统头文件;
•[Net]:网络相关头文件;
•[Sound]:声音相关头文件;
•[Asm/arc/arch]:Amlogic-arc芯片的头文件(驱动直接引用,它能根据芯片型号自动引用apollo或apollo-h的头文件);
•[Asm/arc/archapollo]:apollo系列头文件(为方便移植,不能直接引用);
•[Asm/arc/arch-apollo-h]:apollo-h系列的cpu头文件(为方便移植,不能直接引用);


Kernel/Driver目录
•这个目录里面用来存放各种驱动;
•我公司的驱动全部放在amloigc目录里面,请驱动开发按照这个结构存放,同时在Makefile里面的位置决定启动的顺序,非启动时间需要,请不要把驱动提前;
•[Kernel/Driver /amlogic]目录的基本驱动:
▫[Amports]:视频解码驱动;
▫[Audiodsp]:音频dsp的控制驱动;
▫[Cardreader]:sd,mmc等卡的驱动;
▫[Display]OSD,GE2D等驱动;
▫[HDMI]:HDMI接口驱动;
▫[I2C]:I2c驱动;
▫[Input]:输入设备驱动,现在主要有遥控设备驱动;
▫[Nand]:nandflash驱动;
▫[Net]:网络设备驱动,主要有以太网;
▫[Sound]:alsa音频驱动,(音频需要驱动启动后启动,这是因为音频的核心在driver之后启动)
▫[Uart]:串口设备驱动,有硬件串口驱动和虚拟串口驱动(vuart),虚拟串口可以用来连接Metaware;
▫[USB]:USB的host控制器驱动;


Common目录
•[BSP]不同开发板对应的目录初始化目录,主要是pinmux,内存资源的分配;
▫基本命名规则:芯片型号_内存配置
▫(如:7266_32x2)
•[Makefiles]编译系统的Makefiles,编译时会引用这些Makefile来进行编译;
▫[Makfile.common]:总控Makefile;
▫[Makfile.kernel]:编译内核使用的makefile;
▫[Makefile.busybox]:编译busybox使用的Makefile;
▫[Makefile.debug]:调式时使用的Makefile;
▫[Makefile.packages]:编译packages使用的makefile;(Makefile.common引用)
▫[packages.rules]:packages目录引用的Makefile,分析Config.in文件的配置,并对不同的packages编译进行管理;
▫[package.rules]:具体每个包可以引用的makefile,里面有基本的功能,可以减少重复的代码;
•[Tools]编译和生成Image时使用的工具和脚本;
ROOT
COMMON
trunk
BSP
Makefiles
Tools


Packages 目录
•Packages是软件包的集合
▫包括了zlib, jpeg, freetype, directfb, microwindow, alsa-lib, amplayer等;
▫Config.in#p.menuconfig读取的包的配置文件,具体和busybox下的config.in相同;添加新的packages时需要修改;
▫Makefile#Config.in对应的Makefile,添加新的packages时需要修改;


Packages 目录
•具体软件包的Makefile实现
•以Zlib-1.2.3的Makefile为例
▫P_FILE=zlib-1.2.3.tar.gz#软件包的文件名
▫FILE_DIR=zlib-1.2.3#解压后的文件目录名
▫P_URL=http://www.zlib.net/zlib-1.2.3.tar.gz#下载该包的外部url地址;
▫P_GET_CMD=${HTTP_GET}#获取该包的命令,一般不需要修改;
▫P_GET_FLAGS=${HTTP_GET_FLAGS}#获取该包命令的使用参数;
▫TAR_CMD=${CMD_GZ}#解压包的命令,可以使用CMD_GZ或CMD_BZ2;也可以使用其他标准命令;
▫TAR_FLAGS=${CMD_GZ_FLAGS}#解压包命令使用的参数;和TAR_FLAGS对应;


Packages 目录
▫TRY_MAX=2#如果获取不到该包是,最大重试次数
▫DEPENDS=#他依赖的软件包,如果有多个软件包,只需要空格隔开
▫PATCH_FILE=#这个包需要patch文件名,由于部分包直接编译无法生成有问题,需要打上Patch;一般patch文件就放在当前目录;
▫CONFIG_FLAGS= --host=$(HOST_NAME) --prefix=${PREFIX} --with-softfloat--disable-python --disable-alisp--enable-shared --with-versioned=no /--with-alsa-devdir=/dev
#编译该包的命令选项,具体参考该包的help文件;
▫P_FILE_F=${PKG_DIR}/${P_FILE}
▫BUILD_DIR=${PKG_BUILD_DIR}/${FILE_DIR}
▫PHONY:allconfigbefore_cmd
▫all:before_cmdconfig
▫make -C ${BUILD_DIR}#编译
▫make install#安装


Packages 目录
▫install: #安装
▫make -C ${BUILD_DIR} install
▫PHONY:configure
▫configure:unzip_file#make configure
▫cd${BUILD_DIR}/&& /
▫./configure ${CONFIG_FLAGS}
▫CONFIG_GEN_FILE=${BUILD_DIR}/config.mak#configure生成的文件
▫CONFIG_DEP_FILE=${BUILD_DIR}/configure #config依赖文件
▫UNZIP_GEN_FILE=${BUILD_DIR}/configure #解压生成文件
▫UNZIP_DEP_FILE=${P_FILE_F}#解压依赖文件
▫include $(MAKEFILES_DIR)/package.rules


Ui_ref目录
•这个是参考的项目目录,他通过引用common,kernel,packages等目录来实现项目的管理;
•[env26.mk/env.mk]:用来配置环境,指定所引用的package,kernel,common和rootfs输出的目录;
•[bld_xxxx]:开发扳编译目录,所有编译命令都将在这个目录操作;
•[rootfs]:参考的rootfs目录,这个目录里面主要有用来参考的/etc/配置文件等;
•[build]:编译packages等文件的临时目录,用来存放编译出来的临时文件;
ROOT
Ui_ref
trunk
Bld_7266_h_xxx
rootfs
Build


Env.mk的设置
•Sample:Ui_ref/trunk/env26.mk
•ROOT_DIR=${TOP_DIR}/../../.. #下面引用
•COMMON_DIR=${ROOT_DIR}/common #指定common目录
•ROOTFS_DIR=./rootfs#指定输出的rootfs目录.默认在bld_xxx目录里面,最好指定一个绝对目录,以方便调试,并且切换目录后不会存在问题;
•KERNEL_DIR= $(ROOT_DIR)/kernel_26 #指定内核原码目录
•BUSYBOX_DIR=${ROOT_DIR}/busybox#指定busybox原码目录
•PACKAGES_DIR=${ROOT_DIR}/packages #指定packages目录
•DEFAULT_BOOT_CMD=“root=/dev/nfsnfsroot=10.68.11.57:/home/amlogicbj/rootfs/testfsrwnoinitrdinit=/init ip=10.68.11.72:10.68.11.1:10.68.11.1:255.255.255.0:target:eth0:off console=ttyS0,115200 mac=00:11:22:12:43:22“ #指定内核默认的启动参数(没有使用uboot等loader引导时有效,调试用)
•PACKAGES_DIR_URL#指定packages包的地址;如果没有指定,会从openlinux.amlogic.com下载,通过指定能够加快下速度,方便内部开发使用;
Bld_XXXX目录的基本配置
•Makefile
▫TOP_DIR=${PWD}
▫SRC_DIR=${TOP_DIR}/../src
▫include ../env26.mk##指定引用的环境设置文件目录;
▫BSP_DIR=${COMMON_DIR}/trunk/bsp/7266_h_64x2 ##指定开发板对应的bsp目录
▫RELEASE_DIR=${TOP_DIR}/build
▫BUSYBOX_CONFIG=${TOP_DIR}/busybox_config
▫KERNEL_CONFIG=${TOP_DIR}/kernel_config
▫PACKAGE_CONFIG=${TOP_DIR}/packages_config
▫START_INITRAMFS=no##是否制作ramfs[yes/no],,如果制作,vmlinux里面就存在一个ramfs的;会在启动的时候自己加栽到内存;
▫SRC_ROOT_FS=../rootfs/##rootfs源,主要存放着配置文件,编译busybox的时候会从这里copy到env.mk->ROOTFS指定的目录里面;
▫COMMON_SVN_PATH=##源码对应的svn地址;
▫KERNEL_SVN_PATH=https://10.8.10.5/svn/Project_ARCLinux/trunk/kernel/v2.6.26
▫BUSYBOX_SVN_PATH=https://10.18.11.250/svn/model_linux/busybox/trunk
▫PACKAGES_SVN_PATH=https://10.18.11.250/svn/model_linux/packages
▫include ${COMMON_DIR}/trunk/Makefiles/Makefile.common##引用主Makefile


Bld_XXXX目录的基本配置
•Wmake.bat:windows下面调试使用的批处理文件;
•Makefile:项目编译目录,定义了具体引用的代码地址,板子相关设置;
•Kernel_config:内核的配置文件;
•Busybox_config:busybox配置文件;
•Packages_config:packages配置文件;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值