PPC 仿真环境的搭建(2) --- build_ptest
来源:互联网 发布:linux 错误日志 编辑:程序博客网 时间:2024/06/05 16:33
#!/bin/csh -f
# Powered By Michael Kang
set INFO = "###(info) ${0}"
set ERROR = "###(error) ${0}"
if ($#argv < 2) then
echo "${ERROR}: Should be ${0} testname -<mlittle|mbig>"
exit 1
endif
if ("x$argv[2]" == "x-mlittle") then
set ENDIAN = "-mlittle"
set LDENDIAN = "-EL"
echo "${INFO}: Little Endian MODE"
else if ("x$argv[2]" == "x-mbig") then
set ENDIAN = "-mbig"
set LDENDIAN = "-EB"
echo "${INFO}: Big Endian MODE"
else
echo "${ERROR}: Endian argument must be -mbig or -mlittle"
exit 1
endif
set TEST_DIR = ../tests/$argv[1]/ppc
set LIB_DIR = ../rte/ppc/lib
set INC_DIR = ../rte/ppc/inc
set SRC_DIR = ${TEST_DIR}/src
set WRK_DIR = ${TEST_DIR}/work
set MEM_DIR = ${WRK_DIR}/mem
set LOG_DIR = ${WRK_DIR}/log
set OBJ_DIR = ${WRK_DIR}/obj
## Exit if no .s, .S, or .c files found
set ASM_FILES = `find ${SRC_DIR} -name "*.s" -o -name "*.S"`
set C_FILES = `find ${SRC_DIR} -name "*.c" -print`
if ( ( "${ASM_FILES}" == "" ) && ( "${C_FILES}" == "" ) ) then
echo "ERROR: No test files or direcory found"
exit 1
else
echo "${INFO}: Test files found are"
echo $ASM_FILES
echo $C_FILES
endif
##Create the mem, log, work dirs if they don't already exist
if ( ! -d ./mem ) then
echo "${INFO}: Creating ./mem"
mkdir -p ./mem
endif
if ( ! -d $MEM_DIR ) then
echo "${INFO}: Creating $MEM_DIR"
mkdir -p $MEM_DIR
endif
if ( ! -d $LOG_DIR) then
echo "${INFO}: Creating $LOG_DIR"
mkdir -p $LOG_DIR
endif
if ( ! -d $OBJ_DIR) then
echo "${INFO}: Creating $OBJ_DIR"
mkdir -p $OBJ_DIR
endif
## compile parameter
set BOOT_MEM = "./mem/brom64.hex"
set PROG_MEM = "./mem/asram64.hex"
set CPP = powerpc-elf-cpp
set CC = powerpc-elf-gcc
set AS = powerpc-elf-as
set LD = powerpc-elf-ld
## -ffreestanding 指明了自己实现OS kernel(即启动代码) 用最精简的basic库
set CCFLAGS = "-mcpu=440 -I. -I${INC_DIR} -ffreestanding $ENDIAN"
set ASFLAGS = "-m440 -I${INC_DIR} $ENDIAN"
set CPPFLAGS = "-E -I${INC_DIR}"
set ASM_ONLY = 1
if ( "${C_FILES}" != "" ) then
echo "${INFO}: Compile ${C_FILES}"
set ASM_ONLY = 0
foreach i ($C_FILES)
set base_name = "$i:t"
set base_name = "$base_name:r"
set obj_name = ${OBJ_DIR}/"${base_name}".o
## $CC ${CCFLAGS} -c -O $i -o $obj_name
## 同时编译出 C 相对照的 ASM文件
$CC ${CCFLAGS} -c -O -g -Wa,-adlhn $i -o $obj_name > ${OBJ_DIR}/"${base_name}".s
if ( $status ) exit 1
end
endif
if ( "${ASM_FILES}" != "" ) then
echo "${INFO}: Compile ${ASM_FILES}"
foreach i ($ASM_FILES)
set base_name = "$i:t"
set base_name = "$base_name:r"
set cpp_name = ${LOG_DIR}/"${base_name}".cpp
set obj_name = ${OBJ_DIR}/"${base_name}".o
set lst_name = ${LOG_DIR}/"${base_name}".lst
echo "${INFO}: $CPP : $i"
$CPP ${CPPFLAGS} $i -o ${cpp_name}
echo "${INFO}: $AS : ${cpp_name}"
$AS ${ASFLAGS} ${cpp_name} -o ${obj_name}
if ( $status ) exit 1
end
endif
## link mapping file
set LINK_MAP = "$INC_DIR/link.map" # default linker
if ( -e "$TEST_DIR/src/linker.map" ) then
set LINK_MAP = "$TEST_DIR/src/link.map"
endif
echo "${INFO}: Using link mapping file ${LINK_MAP}"
set OBJ_FILES = `find ${OBJ_DIR} -name "*.o" -print`
if ( $ASM_ONLY == 1 ) then
echo "${INFO}: Only assembler files found: runing $LD"
else
echo "${INFO}: At least one C source file found: running $LD"
endif
## 把一定要用的init.o和testcase调入内存,并在库中调用用的到的相应的子例程放入内存。库名为libmkp.a
## 库的前缀一定要为lib,全名为libxxx.a 而xxx就是要-l 指定的参数
$LD -T ${LINK_MAP} $LDENDIAN ${LIB_DIR}/init.o $OBJ_FILES -L${LIB_DIR} -lmkp -o ${WRK_DIR}/test.exe
if ( $status ) then
echo "${ERROR}: link of test program failed in $0:$LD"
exit 1
endif
echo "${INFO}: create the hex images and disassembly"
powerpc-elf-objcopy -O srec ${WRK_DIR}/test.exe ${MEM_DIR}/test.rec
powerpc-elf-objdump -D $LDENDIAN ${WRK_DIR}/test.exe > ${WRK_DIR}/test.dis
##大写的D 生成额外的RODATA等section
if ( $status ) then
echo "${ERROR}: dump hex image and disassemble failed in $0"
exit 1
endif
cp ${WRK_DIR}/test.dis ./mem/
echo "${INFO}: rec dump Done, please refer to ${MEM_DIR}/test.rec"
echo "${INFO}: dis-asm Done, please refer to ./mem/test.dis"
../rte/ppc/tools/hexFormat.pl ${MEM_DIR}/test
- PPC 仿真环境的搭建(2) --- build_ptest
- PPC 仿真环境的搭建(1) --- build_plib
- EVC仿真环境的搭建
- modelsim仿真环境的搭建
- 3.搭建仿真环境
- pmem仿真环境搭建
- Gazeboard仿真环境搭建
- gazebo+ros搭建单目仿真环境:贴有二维码的天花板+kobuki+camera(2)
- 搭建P2P VoIP应用程序的仿真可控网络测试环境
- Windows平台下NS2网络仿真环境的搭建
- NS2网络仿真环境的搭建和使用
- Windows平台下NS2网络仿真环境的搭建
- matlab/simulink环境下搭建的仿真电路
- 搭建Modelsim SE仿真环境-使用do文件仿真
- 搭建Modelsim SE仿真环境-使用do文件仿真
- 搭建Modelsim SE仿真环境-使用do文件仿真
- [robocup] 3D仿真环境搭建
- C51开发以及仿真环境搭建
- 修改linux系统安装界面的语言!
- VC6.0编译器参数的设置
- CentOS 安装温度监控 lm_sensors
- 庖丁解牛ASP.NET3.5控件和组件开发技术-(4)服务器控件属性
- 祭奠我的小5
- PPC 仿真环境的搭建(2) --- build_ptest
- U盘振救了我的系统
- 图像分辨率增强或者改变图像大小
- js 鼠标滚轮缩放图片
- iBATIS和spring
- C# Request.ServerVariables参数集
- GridControl 更改分组标题,获取分组标题
- Webmin
- Linux文件压缩