- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图加载从 rust 代码编译的二进制文件,但它不起作用。
首先,我从 https://github.com/rust-embedded/discovery 下载了 Rust 代码。 .
然后,我建立了它。
# I am in the `src/05-led-roulette` directory
rustup target add thumbv7m-none-eabi
cargo build --target thumbv7m-none-eabi
arm-none-eabi-gdb -q target/thumbv7m-none-eabi/debug/led-roulette
Reading symbols from target/thumbv7m-none-eabi/debug/led-roulette...
(gdb)
load
命令,但它返回以下句子。
Start address 0x0, load size 0
Transfer rate: 0 bits in <1 sec.
最佳答案
先看看你的二进制文件好不好,然后试试telnet,然后是gdb。 Rust 也会增加失败的几率,所以从简单的开始:
所以.s
.thumb
.globl _start
_start:
.word 0x20001000
.word reset
.thumb_func
reset:
ldr r0,some_addr
ldr r1,[r0]
add r1,r1,#1
str r1,[r0]
b .
.align
some_addr: .word 0x20000000
build 它
arm-none-eabi-as so.s -o so.o
arm-none-eabi-ld -Ttext=0x08000000 so.o -o so.elf
arm-none-eabi-objdump -D so.elf
arm-none-eabi-objdump -D so.elf
so.elf:文件格式elf32-littlearm
8000000: 20001000 andcs r1, r0, r0
8000004: 08000009 stmdaeq r0, {r0, r3}
0x08000009 是复位地址 ORRed 加一。所以0x08000008 | 1 是 0x08000009。所以这至少会启动并尝试无故障地获取代码。
openocd -f jlink.cfg -f target.cfg
Open On-Chip Debugger 0.9.0 (2019-04-28-23:34)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : JLink SWD mode enabled
swd
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
none separate
cortex_m reset_config sysresetreq
Info : J-Link ARM-OB STM32 compiled Jun 30 2009 11:14:15
Info : J-Link caps 0x88ea5833
Info : J-Link hw version 70000
Info : J-Link hw type J-Link
Info : J-Link max mem block 15344
Info : J-Link configuration
Info : USB-Address: 0x0
Info : Kickstart power on JTAG-pin 19: 0x0
Info : Vref = 3.300 TCK = 1 TDI = 1 TDO = 1 TMS = 1 SRST = 1 TRST = 1
Info : J-Link JTAG Interface ready
Info : clock speed 1000 kHz
Info : SWD IDCODE 0x1ba01477
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
如果在返回控制台时看不到观察点行,则它不起作用。
telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
>
现在让我们停止芯片并编写我们的程序。 psr、pc 等值可能与我的不同,具体取决于您运行的内容。
> reset halt
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08000010 msp: 0x20001000
> flash write_image erase so.elf
auto erase enabled
device id = 0x20036410
flash size = 64kbytes
wrote 1024 bytes from file so.elf in 0.437883s (2.284 KiB/s)
让我们阅读它,看看它在那里,应该与反汇编中的单词匹配
> mdw 0x08000000 20
0x08000000: 20001000 08000009 5000f04f 31016801 e7fe6001 ffffffff ffffffff ffffffff
0x08000020: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
0x08000040: ffffffff ffffffff ffffffff ffffffff
假设这是随机垃圾,只要我们看到它增加就可以了。
> mdw 0x20000000
0x20000000: 2e006816
> reset
> halt
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x08000012 msp: 0x20001000
> mdw 0x20000000
0x20000000: 2e006817
因此,如果您进行重置,则该值会增加,然后停止(不是在一个命令中进行重置停止)然后转储该内存位置,它应该每次都保持增加。
关于rust - 使用 OpenOCD 和 arm-none-eabi-gdb 将二进制文件加载到 stm32f103c8t6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60245257/
这里有两个问题: 将共享库移植到许多 Linux-or-Android-on-ARM 系统时,需要知道 GCC 交叉编译器支持的确切 EABI 版本以及默认的 EABI 版本。怎么做? 如何调查哪个
我正在使用 Launchpad Arm 编译器工具。具体来说, arm-none-eabi-g++ 和 arm-none-eabi-gcc 来自: (ARM 嵌入式处理器的 GNU 工具)5.2.1
我正在使用下面的 gcc 工具链。gcc 版本 5.4.1 20160919(发布)[ARM/embedded-5-branch 修订版 240496](用于 ARM 嵌入式处理器的 GNU 工具)
我正在尝试使用arm-none-eabi-gcc为STM32编译一个USB环回示例,但遇到了bool变量的编译器错误。错误为错误:“_Bool”之前应有“;”、标识符或“(”,违规行为 typedef
如果一个 Android 应用程序最初只支持 armeabi-v7a 和 x86,并且在未来它增加了对 arm64-v8a 的支持,设备(主要和次要 ABI 分别是 arm64-v8a 和 armea
我有一个复杂的开源库需要移植到安卓NDK。首先,我需要配置 (./Configure)。我明白:我必须使用/home/user/android-ndk/build/prebuilt/进行交叉编译lin
我们在Android开发中需要ARM EABI v7a系统镜像做什么?该特定图像的目的是什么? 最佳答案 如果您使用 NativeDK,没有该图像,模拟器将无法模拟 ARMv7 代码的执行(如多核指令
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我在 Linux 机器上用 C 语言编写了一个 hello world 程序。编译是使用工具链 arm-none-eabi-gcc 完成的(稍后我将使用它进行交叉编译)。但我想在进一步推进之前在同一台
我有一个视频模块,我正在使用 arm-eabi-gcc 交叉编译器进行编译。我使用以下命令进行编译$ arm-eabi-gcc -O2 -DMODULE -D__KERNEL__ -W -Wall -
我正在为我的 Android 项目运行 arm-eabi-addr2line,我的命令是 /Applications/android-sdk-mac_86/android-ndk-r5b/toolch
我正在尝试在树莓派上安装用于汇编代码的工具链。我使用以下过程来安装包文件: $ wget http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/
我正在通过 arm-unknown-linux-gnueabi 交叉编译我的代码,在编译期间可以看到很多以下警告 Unknown EABI object attribute 44 上面的警告是可以忽略
我正在 64 位 Linux 机器上用 C 编译一个 hello world 程序。我正在使用 GCC ARM 嵌入式工具链在配备 ATMEL AT91SAM9G20 处理器的 FOX G20 V 板
arm-eabi-gcc和arm-elf-gcc有什么区别? 他们可以为cortex-m3 arch编译相同的源代码吗? 最佳答案 arm-elf-gcc是支持旧版浮点加速器(FPA)和混合字节序浮点
我越看这个 PDF ( Application Binary Interface forthe ARM Architecture: The Base Standard ),我就越不明白它的意思。我还想
我正在尝试将“眨眼”示例上载到我的MKR1000。但是,我一直收到相同的错误: fork/exec /Users/username/Library/Arduino15/packages/arduino
我正在尝试在minGW中使用arm-none-eabi-gcc编译HELLOWORLD.c,命令如下: D:\code>arm-none-eabi-gcc hello.c -o hello -shar
我正在尝试为 STM32L030x6 MCU 制作固件。 我编写了一个简单的代码,似乎可以在具有 STM32L030x8 MCU 的评估板上运行。我所说的“似乎有效”是指我能够访问主 fct 并切换
我在库中有一个头文件,其中包括 inttypes.h (使用 PRIu8 等所需)。我将库头文件包含到我自己的应用程序文件中。 当我尝试在lpcxpresso(基于eclipse)中使用arm-non
我是一名优秀的程序员,十分优秀!