arm: add support for semihosting for ARMv7M targets
PATCH v2 1/2 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.
---
arch/arm/lib/semihosting.c | 2 ++ 1 file changed, 2 insertions(+)
arch/arm/lib/semihosting.c +2 -0
@@ -31,6 +31,8 @@ static noinline long smh_trap(unsigned int sysnum, void *addr) registerlong result asm("r0" );#if defined(CONFIG_ARM64 ) asmvolatile ("hlt #0xf000" :"=r" (result) :"0" (sysnum),"r" (addr)); +#elif defined(CONFIG_CPU_V7M ) + asmvolatile ("bkpt #0xAB" :"=r" (result) :"0" (sysnum),"r" (addr));#else /* Note - untested placeholder */ asmvolatile ("svc #0x123456" :"=r" (result) :"0" (sysnum),"r" (addr));
Signature · 1 line
2.6.1
PATCH v2 2/2 arm: fix compile warnings when semihosting is enabled on ARMv7M target.
---
arch/arm/lib/semihosting.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
arch/arm/lib/semihosting.c +2 -2
@@ -92,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;
@@ -107,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 ; }
Signature · 1 line
2.6.1
PATCH v2 2/2 arm: fix compile warnings when semihosting is enabled on ARMv7M target.
Hello Vadzim,
Quoted 20 lines · Vadzim Dambrouski
Signed-off-by Vadzim Dambrouski <[email protected]>---
arch/arm/lib/semihosting.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)arch/arm/lib/semihosting.c +1
-1@@ -92,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;
arch/arm/lib/semihosting.c static long smh_read(long fd, void *memp, size_t len) · line 112
Quoted 7 lines
arch/arm/lib/semihosting.c +1
-1@@ -107,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 ; }
len is a size_t; it should not be force-converted into a long, it should be printed using a 'z' qualifier.
Amicalement,
Signature · 1 line
Albert.
PATCH v2 2/2 arm: fix compile warnings when semihosting is enabled on ARMv7M target.
Quoted 35 lines · Albert ARIBAUD
Hello Vadzim,
Quoted 20 lines · Vadzim Dambrouski
Signed-off-by Vadzim Dambrouski <[email protected]>---
arch/arm/lib/semihosting.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)arch/arm/lib/semihosting.c +1
-1@@ -92,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;arch/arm/lib/semihosting.c static long smh_read(long fd, void *memp, size_t len) · line 112
Quoted 7 lines
arch/arm/lib/semihosting.c +1
-1@@ -107,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 ; }len is a
size_t; it should not be force-converted into a long, it should be printed using a 'z' qualifier.
Quoted 2 lines
Amicalement,
Well, you are right, I'll send another revision of this patch set. Thank you for all your assistance.
Regards,
Vadzim Dambrouski
PATCH v2 1/2 arm: add support for semihosting for ARMv7M targets
In reply to Vadzim DambrouskiHello Vadzim,
Quoted 3 lines · Vadzim Dambrouski
It is possible to enable
CONFIG_SEMIHOSTINGfor 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.
You should give some more indication of the reason for the compile error and the nature of the fix. For instance, you could quote the essential part of the error message (so that people googling for the error message may find this commit and mail thread) and a very short analysis (so that they can test if 'their' error is the same and can be solved the same way).
Quoted 22 lines
Signed-off-by Vadzim Dambrouski <[email protected]>---
arch/arm/lib/semihosting.c | 2 ++ 1 file changed, 2 insertions(+)arch/arm/lib/semihosting.c +2
-0@@ -31,6 +31,8 @@ static noinline long smh_trap(unsigned int sysnum, void *addr) registerlong result asm("r0" );#if defined(CONFIG_ARM64 ) asmvolatile ("hlt #0xf000" :"=r" (result) :"0" (sysnum),"r" (addr)); +#elif defined(CONFIG_CPU_V7M ) + asmvolatile ("bkpt #0xAB" :"=r" (result) :"0" (sysnum),"r" (addr));#else /* Note - untested placeholder */ asmvolatile ("svc #0x123456" :"=r" (result) :"0" (sysnum),"r" (addr));Signature · 1 line
2.6.1
Amicalement,
Signature · 1 line
Albert.