[U-Boot] [PATCH] arm: add support for semihosting for ARMv7M targets

It is possible to enable CONFIG_SEMIHOSTING for STM32F429 target, but it would result in compile error. This patch adds support for semihosting for STM32F429 or any other ARMv7M target. Tested on STM32F429-DISCOVERY board.
Signed-off-by: Vadzim Dambrouski pftbest@gmail.com ---
arch/arm/lib/semihosting.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c index c3e964e..6541cb4 100644 --- a/arch/arm/lib/semihosting.c +++ b/arch/arm/lib/semihosting.c @@ -31,6 +31,8 @@ static noinline long smh_trap(unsigned int sysnum, void *addr) register long result asm("r0"); #if defined(CONFIG_ARM64) asm volatile ("hlt #0xf000" : "=r" (result) : "0"(sysnum), "r"(addr)); +#elif defined(CONFIG_CPU_V7M) + asm volatile ("bkpt #0xAB" : "=r" (result) : "0"(sysnum), "r"(addr)); #else /* Note - untested placeholder */ asm volatile ("svc #0x123456" : "=r" (result) : "0"(sysnum), "r"(addr)); @@ -90,7 +92,7 @@ static long smh_read(long fd, void *memp, size_t len) size_t len; } read;
- debug("%s: fd %ld, memp %p, len %lu\n", __func__, fd, memp, len); + debug("%s: fd %ld, memp %p, len %lu\n", __func__, fd, memp, (ulong)len);
read.fd = fd; read.memp = memp; @@ -105,7 +107,7 @@ static long smh_read(long fd, void *memp, size_t len) * with an error message. */ printf("%s: ERROR ret %ld, fd %ld, len %lu memp %p\n", - __func__, ret, fd, len, memp); + __func__, ret, fd, (ulong)len, memp); return -1; }

On Sun, Oct 18, 2015 at 1:40 AM, Vadzim Dambrouski pftbest@gmail.com wrote:
It is possible to enable CONFIG_SEMIHOSTING for STM32F429 target, but it would result in compile error. This patch adds support for semihosting for STM32F429 or any other ARMv7M target. Tested on STM32F429-DISCOVERY board.
Signed-off-by: Vadzim Dambrouski pftbest@gmail.com
Hey, cool. Technically the (ulong) typecasts should be another patch but I don't care too much. Reviewed-by: Linus Walleij linus.walleij@linaro.org
Are you using this with the smload commands?
Yours, Linus Walleij

On 18.10.2015 12:20, Linus Walleij wrote:
Hey, cool. Technically the (ulong) typecasts should be another patch
Sorry about that, this is my first time sending a patch.
Are you using this with the smload commands?
Yes, I do use smhload command, and openocd on the other end. Useful for debugging targets without ethernet support.

Hello Vadzim,
On Sun, 18 Oct 2015 12:45:51 +0300, Vadzim Dambrouski pftbest@gmail.com wrote:
On 18.10.2015 12:20, Linus Walleij wrote:
Hey, cool. Technically the (ulong) typecasts should be another patch
Sorry about that, this is my first time sending a patch.
Would you mind resending as two different patches then?
Are you using this with the smload commands?
Yes, I do use smhload command, and openocd on the other end. Useful for debugging targets without ethernet support.
Amicalement,

On Sun, Oct 18, 2015 at 11:45 AM, Vadzim Dambrouski pftbest@gmail.com wrote:
On 18.10.2015 12:20, Linus Walleij wrote:
Hey, cool. Technically the (ulong) typecasts should be another patch
Sorry about that, this is my first time sending a patch.
Are you using this with the smload commands?
Yes, I do use smhload command, and openocd on the other end. Useful for debugging targets without ethernet support.
That is *so* cool. You should make a blog post about this, I think it's generally useful for developers to know they can use U-Boot+JTAG+OpenOCD to get code into any platform (if they have a scan chain definitions) like this.
Yours, Linus Walleij

On Mon, Oct 19, 2015 at 09:12:25AM +0200, Linus Walleij wrote:
On Sun, Oct 18, 2015 at 11:45 AM, Vadzim Dambrouski pftbest@gmail.com wrote:
On 18.10.2015 12:20, Linus Walleij wrote:
Hey, cool. Technically the (ulong) typecasts should be another patch
Sorry about that, this is my first time sending a patch.
Are you using this with the smload commands?
Yes, I do use smhload command, and openocd on the other end. Useful for debugging targets without ethernet support.
That is *so* cool. You should make a blog post about this, I think it's generally useful for developers to know they can use U-Boot+JTAG+OpenOCD to get code into any platform (if they have a scan chain definitions) like this.
Yes, please!

On 19.10.2015 18:37, Tom Rini wrote:
On Mon, Oct 19, 2015 at 09:12:25AM +0200, Linus Walleij wrote:
On Sun, Oct 18, 2015 at 11:45 AM, Vadzim Dambrouski pftbest@gmail.com wrote:
On 18.10.2015 12:20, Linus Walleij wrote:
Hey, cool. Technically the (ulong) typecasts should be another patch
Sorry about that, this is my first time sending a patch.
Are you using this with the smload commands?
Yes, I do use smhload command, and openocd on the other end. Useful for debugging targets without ethernet support.
That is *so* cool. You should make a blog post about this, I think it's generally useful for developers to know they can use U-Boot+JTAG+OpenOCD to get code into any platform (if they have a scan chain definitions) like this.
Yes, please!
Sorry, I'm not very good at writing (I don't even have a blog) and there is not much to write about. But I'll consider starting a blog (it may be a good experience for me).
Regards, Vadzim Dambrouski
participants (4)
-
Albert ARIBAUD
-
Linus Walleij
-
Tom Rini
-
Vadzim Dambrouski