我有一个在裸机目标上运行的应用程序,具有以下结构
它编译成ELF可执行文件(system.elf)使用标准gcc -c,ld序列.我使用链接器生成一个显示所有符号地址的映射文件.
现在,在不重新刷新系统的情况下,我需要使用自定义运行时加载器添加额外的功能.请记住,这是一款没有操作系统的裸机.
我想
我以为我能够重用map文件来链接extra.o对system.elf但这不起作用:
ld -o extraExe extra.o system.map
Run Code Online (Sandbox Code Playgroud)
gcc或ld是否有某种模式来进行这种后期链接过程?如果没有,我如何实现上面概述的动态代码加载?
我正在尝试从由 modelsim 或 ghdl 执行的模拟中转储内部信号。一切正常使用:
对于modelsim,添加vhdl源,然后编译:
vsim -novopt work.uut_testbench
vcd file ../uut.vcd;
vcd limit 50000000;
vcd add -r /uut_testbench/uut_core/*;
run 6000
quit -sim
Run Code Online (Sandbox Code Playgroud)
对于 GHDL
ghdl -i --ieee=synopsys --warn-no-vital-generic --workdir=work --work=work ./uut*.vhd
ghdl -m --ieee=synopsys --warn-no-vital-generic --workdir=work --work=work uut_testbench
./uut_testbench --stop-time=6000ns --vcd=../uut.vcd
Run Code Online (Sandbox Code Playgroud)
我可以看到模拟信号,但不是全部。信号定义为
Type InternalState is (Idle,Valid,Stalled);
Signal sState,sPrevState :InternalState;
Run Code Online (Sandbox Code Playgroud)
从 vcd 中省略。这种行为对于modelsim 和ghdl 很常见。
我可以在 ghdl 生成的 vcd 中看到以下行
$comment sstate is not handled $end
Run Code Online (Sandbox Code Playgroud)
Modelsim 只是悄悄地忽略了这些信号
有解决方法吗?选择?
我有一个打印单行的命令.我想将这一行添加/管道到一个文件,就在它的最后一行之上.
my_cmd | sed -i '$i' test
Run Code Online (Sandbox Code Playgroud)
我只是在最后一行上方的正确位置找到一个空行.我注意到当我添加任何字符串时'$i foo',"foo"会在正确的位置打印,但我希望打印管道线.
我怎样才能使用STDIN而不是"foo"?