LTIB常用命令1

时间:2023-12-17 14:33:02

下面再写一点ltib的常用命令参数吧,虽然觉得对其编译内核和文件系统流程有了一定了解,但是对其命令参数用过的还不是很多,可以说是不甚了解,下面介绍一些,希望有用:

首先一个比较有用的命令参数就是help,一个人忘记命令参数很常见,何况刚开始熟悉这个工具。下面这个命令行可以查看ltib命令的使用帮助:
$
./ltib --help ## 这个等同于 ./ltib -h
在编译内核和文件系统时,有时忘了我们选了哪些程序包来进行编译操作,我们可以用下面的命令来查看当前安装模式下所有可用的程序包,是否被选择编译进工程
:
$
./ltib -m listpkgs ## 此命令是根据ltib的配置来显示
查看配置中已选编译的程序包,如内核版本包,系统工具包:
$
./ltib -m listpkgs | grep ' y '
如果想看编译过程产生的信息并把这些信息也保存,以备以后查看,可用以下命令
$
./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch
2>&1 | tee ltib_log.txt
##
保存编译过程产生的信息及错误信息全部保存到ltib_log.txt文件中
ltib提供了一种shell模式,它直接提供了我们当前配置的交叉编译工具链模式,下面的命令能让我们进入ltib的shell环境
$
./ltib -m shell ## 完成后会给出提示,进入shell模式的提示符 'LTIB>'
##
输入exit可退出shell模式
##
下面的命令可以看一下这个有什么用,我直接给出命令,它下面就是这个命令的结果,不再解释
LTIB>
gcc --version
powerpc-linux-uclibc-gcc
(GCC) 3.4.3
Copyright
(C) 2004 Free Software Foundation, Inc.
This
is free software; see the source for copying conditions. There is NO
warranty;
not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
LTIB>
有时候我们想看一下某些程序包的源码,比如kernel、uboot等这些看了有益于身心健康的程序源码,该怎么办呢?
还有一种情况就是这些源码中存放有板子的各种配置文件,比如内存映射分配,也需要看一下源码文件,其命令格式为 $ ./ltib -m prep -p
<program_package_name>
##
下面这部分我是在large文件夹下操作,所写路径也是相对于/usr/local/mpc8349/large/来写的,而不是mytest文件夹下
##
例如我们要查看MPC8349ITX开发板上vsc7385的内存分配,或查找VSC7385的驱动模块部分,需要看uboot、内核源码,以下命令得到内核源码
$
./ltib -m prep -p kernel
##
解压后的内核源码位于rpm/BUILD/linux-2.6.13/
##
其中vsc7485的驱动是rpm/BUILD/linux-2.6.13/drivers/net/gianfar_phy.c
##
下面操作必须在原来的large文件夹下操作,为什么这么做?自己思考吧。以下命令可以得到uboot源码
$
./ltib -m prep -p u-boot
##
解压后得到的uboot源码位于rpm/BUILD/u-boot-1.1.3
##
其中有关MPC8349MITX板子配置信息的重要文件为/include/configs/MPC8349ITX.h
##
在上面的这个文件中可用看到VSC7385的内存分配基地址信息(#define CFG_VSC7385_BASE 0xF8000000)
##
不用uboot命令的话,可参看一下源码帮助理解。
##
注:上面这段命令操作我之所以选择在/usr/local/mpc8349/large文件夹下,是因为要得到某些程序源码,首先它得编译过。
上面介绍了一个ltib编译内核和文件系统比较好用的办法,当你比较熟悉了ltib工作流程,完全可以自己配置交叉编译工具链,内核和文件系统,然后编译,可以用下面这个命令行
$
./ltib --configure
如果想重新产生所有内核和RFS镜像有以下三个办法:
##
办法一: 直接调用配置文件编译,如果配置文件没有更新,且编译过的目标镜像没有变化,会不进行编译。若有任何改动,会执行编译
$
./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final
--batch
##
办法二: 如办法一一样,但强制重新编译
$
./ltib --preconfig config/platform/mpc8349itx/defconfig-min-fs-our-final --batch
-f
##
办法三: 清除所有编译的程序包,然后重新配置编译镜像
$
./ltib -m distclean ## 清除ltib工程文件
$
./ltib --configure ## 重新配置编译
假如我们对ltib的配置文件不满意,想自己通过配置操作来熟悉ltib的各种配置,或者相关工作做完了,甚至是看它不顺眼,都可以采用此操作,把LTIB完全卸载,
##
首先执行命令:
$
./ltib -m distclean ## 此操作将彻底清除所有当前ltib工程文件
##
此命令不要轻易使用,除非比较熟悉ltib编译配置过程
##
然后以root身份执行以下操作(注意:此操作将卸载所有的公共文件)
#
rm -rf /opt/freescale/pkgs
#
rm -rf /opt/freescale/ltib
#
rm <install_path> ## 执行文件ltib的上级目录
##
另一种更加暴力的办法是root身份运行rm命令来删除所有
下面再写一下外部内核模块的编译,假如我们有一个文件夹test(位于主目录/home/liuby/下),该文件夹包含程序源码文件test.c和Makefile,这两个文件的内容附在此段内容的最后。
##
首先我们得到内核源码,然后再编译,为什么这么做,我也不懂~~~,有些纳闷,以后再解决
$
./ltib -m prep -p kernel
$
./ltib -m scbuild -p kernel ##
编译的镜像为rpm/BUILD/linux/arch/ppc/boot/images/uImage
##
将test文件夹copy到内核的driver文件夹下
$
cp -a ~/test rpm/BUILD/linux/drivers/
##
vi修改driver文件夹下的Makefile
$
vi rpm/BUILD/linux/drivers/Makefile
##
可以仿照Makefile里的内容在最后添加如下一行
ojb-m
+= test/ ## 然后保存退出
##
修改test文件夹下的test.c和Makefile确保其正确无误。
##
下面的命令是进入ltib的shell环境,然后进入到test目录,然后编译
$
./ltib -m shell
LTIB>
cd rpm/BUILD/linux/drivers/test/
LTIB>
make V=1 ARCH=ppc
##
rpm/BUILD/linux/drivers/test/test.ko就是我们想要的module,下载到板子上用insmod
test.ko来执行模块(rmmod test.ko是卸载模块)
++++++++++++++++下面为test.c程序内容++++++++++++++++++
#include
<linux/init.h>
#include
<linux/module.h>
#include
<asm/mpc83xx.h>
MODULE_LICENSE("Dual
BSD/GPL");
static
int hello_init(void)
{
printk(KERN_ALERT
"Hello, world\n");
printk(KERN_ALERT
"IMMR virtual address: %X\n", VIRT_IMMRBAR);
printk(KERN_ALERT
"IMMRBAR: %08lX\n", *(unsigned long*)(VIRT_IMMRBAR + 0x00000));
printk(KERN_ALERT
"SPRIDR : %08lX\n", *(unsigned long*)(VIRT_IMMRBAR + 0x00108));
return
0;
}
static
void hello_exit(void)
{
printk(KERN_ALERT
"Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
++++++++++++++++上面为test.c程序内容++++++++++++++++++
+++++++++++++++下面为Makefile程序内容+++++++++++++++++
ifneq
($(KERNELRELEASE),)
obj-m
:= test.o
else
KDIR
:= ../..
PWD
:= $(shell pwd)
default:
$(MAKE)
-C $(KDIR) M=$(PWD)
endif
+++++++++++++++上面为Makefile程序内容+++++++++++++++++
##
类似地我们可以编译vlan配置模块