1.codebase
1.1 文档
- 1.基础文档:
SDK_User_Guide_v08.05.pdf
1.2 代码
openbmc
代码:
$ git clone https://github.com/AspeedTech-BMC/openbmc
$ git checkout v08.05
- 编译
# . setup ast2500-default
# bitbake obmc-phosphor-image
2.适配
2.1 初始版本
初始版本烧录进去后,可以看到BMC
在uboot
中来回重启,没有办法进入到kernel
中。如下图所示:
可以通过如下命令查看哪一个watchdog
被启用了。
# md 0x1e78500c 1
1e78500c: 00000010 ....
# md 0x1e78502c 1 //bit1表示启用
1e78502c: 00000093 ....
# md 0x1e78504c 1
1e78504c: 00000010 ....
可以确认到,watchdog2
被启用了。
在uboot
下禁用watchdog2
:
# mw 0x1e78502c 0x10 //设置
# md 0x1e78502c 1 //查看
1e78502c: 00000010 ....
启动kernel
:
# boot
可以看到成功启动:
2.2 修改u-boot
代码
使用命令:
$ devtool modify u-boot
下载源代码。
在uboot
中/home/wityuan/Desktop/aspeed/openbmc/build/ast2500-default/workspace/sources/u-boot-aspeed-sdk/arch/arm/mach-aspeed/ast2500/board_common.c
的函数board_add_ram_info()
添加代码:
{
unsigned long value = 0;
//disable watchdog
*((volatile unsigned long *)(0x1e78502c)) = 0x10;
value = *((volatile unsigned long *)(0x1e78502c));
printf("\nwatchdog stop: 0x%08x \n", value);
}
如此,BMC
能正常启动并进入系统。系统用户名与密码:
用户名: root
密码: 0penBmc
2.3 修改linux-aspeed
代码
2.3.1 支持ncsi
网络:
硬件结构:
修改文件:/home/wityuan/Desktop/aspeed/openbmc/build/ast2500-default/workspace/sources/linux-aspeed/arch/arm/boot/dts/aspeed-ast2500-evb.dts
&mac0 {
status = "okay";
use-ncsi;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rgmii1_default &pinctrl_mdio1_default>;
};
其中:use-ncsi;
是新增内容。
- 修改前,串口日志
- 修改后,串口日志:
可以通过网络访问BMC
:
可以看到,能访问BMC KVM
:
2.4 修改分区
查看当前的分区大小,可以看到:
实际代码的配置也是按照32 Mbytes
大小配置的。可以在文件:meta-aspeed-sdk/meta-ast2500-sdk/conf/machine/ast2500-default.conf
中找到配置:
# Overwrite flash layout
FLASH_SIZE = "32768"
FLASH_UBOOT_OFFSET = "0"
FLASH_KERNEL_OFFSET = "1024"
FLASH_ROFS_OFFSET = "6144"
FLASH_RWFS_OFFSET = "29952"
RWFS_SIZE = "2883584"
实际使用的flash
大小为64Mbytes
大小的,需要修改配置:
# Overwrite flash layout
FLASH_SIZE = "65535"
FLASH_UBOOT_OFFSET = "0"
FLASH_KERNEL_OFFSET = "1024"
FLASH_ROFS_OFFSET = "10240"
FLASH_RWFS_OFFSET = "47104"
RWFS_SIZE = "18874368"
分布图为:
另外,需要修改build/ast2500-default/workspace/sources/linux-aspeed/arch/arm/boot/dts/aspeed-ast2500-evb.dts
中的空间布局:
&fmc {
status = "okay";
flash@0 {
status = "okay";
m25p,fast-read;
label = "bmc";
spi-max-frequency = <50000000>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
u-boot@0 {
reg = <0x0 0xf0000>; // 960KB
label = "u-boot";
};
u-boot-env@f0000 {
reg = <0xf0000 0x10000>; // 64KB
label = "u-boot-env";
};
kernel@100000 {
reg = <0x100000 0x900000>; // 9MB
label = "kernel";
};
rofs@600000 {
reg = <0xa00000 0x2400000>; // 36MB
label = "rofs";
};
rwfs@1d40000 {
reg = <0x2e00000 0x1200000>; //18MB
label = "rwfs";
};
};
};
};
修改完成后,编译烧录,可以看到布局:
2.5 支持nfs
在实际做开发的过程中,挂在调试是必不可少的内容,能大大减少开发时间。可以使用如下命令进行修改linux kernel
配置,支持nfs
$ bitbake -c menuconfig linux-aspeed
修改完成后,保存文件,文件名称为:.config.new
。
编译镜像,即可使用如下命令挂载主机文件系统,实现调试的目的。
mount -o nolock -t nfs serverip:serverfolder bmcdir
可以执行命令:
$ bitbake -c savedefconfig linux-aspeed
保存配置文件,可以看到保存到的文件路径为:
/home/wityuan/Desktop/aspeed/openbmc/build/ast2500-default/tmp/work/ast2500_default-openbmc-linux-gnueabi/linux-aspeed/5.15.0+git999-r0/linux-aspeed-5.15.0+git999/defconfig