Skip to content

boards/tiva: change default toolchain for tm4c123g to GNU EABI#18690

Merged
acassis merged 1 commit intoapache:masterfrom
TheFakeMontyOnTheRun:TheFakeMontyOnTheRun-patch-1
Apr 11, 2026
Merged

boards/tiva: change default toolchain for tm4c123g to GNU EABI#18690
acassis merged 1 commit intoapache:masterfrom
TheFakeMontyOnTheRun:TheFakeMontyOnTheRun-patch-1

Conversation

@TheFakeMontyOnTheRun
Copy link
Copy Markdown
Contributor

Fixes: #18668

Summary

This will change the default toolchain from OABI to GNU EABI. Out of the box,

Impact

it's a less jarring experience to anyone trying to run NuttX on the TM4C123G. TBH, I'm not even sure how to use OABI (or if it's even possible. My only experience with Buildroot was with Linux).

Sadly, I can't help with other configurations or boards, since I do not own the required hardware to test (I think)?

Should I open an issue for the other boards? Given how wide is the effort to fix this for other boards, it's something to be discussed within the governance of the project .

Testing

Built cleanly on the Machine 3 listed here (#18668).
After programming the board, NuttX worked perfectly on minicom.
Running OSTest did generate an assertion error:

ostest
stdio_test: write fd=1
stdio_test: Standard I/O Check: printf
stdio_test: write fd=2
stdio_test: Standard I/O Check: fprintf to stderr
ostest_main: putenv(Variable1=BadValue3)
ostest_main: setenv(Variable1, GoodValue1, TRUE)
ostest_main: setenv(Variable2, BadValue1, FALSE)
ostest_main: setenv(Variable2, GoodValue2, TRUE)
ostest_main: setenv(Variable3, GoodValue3, FALSE)
ostest_main: setenv(Variable3, BadValue2, FALSE)
show_variable: Variable=Variable1 has value=GoodValue1
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
ostest_main: Started user_main at PID=5

user_main: Begin argument test
user_main: Started with argc=5
user_main: argv[0]="ostest"
user_main: argv[1]="Arg1"
user_main: argv[2]="Arg2"
user_main: argv[3]="Arg3"
user_main: argv[4]="Arg4"

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena        5c04     5c04
ordblks         1        1
mxordblk     1a48     1a48
uordblks     41bc     41bc
fordblks     1a48     1a48

user_main: getopt() test
getopt():  Simple test
getopt():  Invalid argument
getopt():  Missing optional argument
getopt_long():  Simple test
getopt_long():  No short options
getopt_long():  Argument for --option=argument
getopt_long():  Invalid long option
getopt_long():  Mixed long and short options
getopt_long():  Invalid short option
getopt_long():  Missing optional arguments
getopt_long_only():  Mixed long and short options
getopt_long_only():  Single hyphen long options

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena        5c04     5c04
ordblks         1        1
mxordblk     1a48     1a48
uordblks     41bc     41bc
fordblks     1a48     1a48

user_main: libc tests

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena        5c04     5c04
ordblks         1        1
mxordblk     1a48     1a48
uordblks     41bc     41bc
fordblks     1a48     1a48
show_variable: Variable=Variable1 has value=GoodValue1
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3
show_variable: Variable=Variable1 has no value
show_variable: Variable=Variable2 has value=GoodValue2
show_variable: Variable=Variable3 has value=GoodValue3

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena        5c04     5c04
ordblks         1        2
mxordblk     1a48     1a48
uordblks     41bc     419c
fordblks     1a48     1a68
show_variable: Variable=Variable1 has no value
show_variable: Variable=Variable2 has no value
show_variable: Variable=Variable3 has no value

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena        5c04     5c04
ordblks         2        2
mxordblk     1a48     1a48
uordblks     419c     4124
fordblks     1a68     1ae0

user_main: setvbuf test
setvbuf_test: Test NO buffering
setvbuf_test: Using NO buffering
setvbuf_test: Test default FULL buffering
setvbuf_test: Using default FULL buffering
setvbuf_test: Test FULL buffering, buffer size 64
setvbuf_test: Using FULL buffering, buffer size 64
setvbuf_test: Test FULL buffering, pre-allocated buffer
setvbuf_test: Using FULL buffering, pre-allocated buffer
setvbuf_test: Test LINE buffering, buffer size 64
setvbuf_test: Using LINE buffering, buffer size 64
setvbuf_test: Test FULL buffering, pre-allocated buffer
setvbuf_test: Using FULL buffering, pre-allocated buffer

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena        5c04     5c04
ordblks         2        2
mxordblk     1a48     1a48
uordblks     4124     4124
fordblks     1ae0     1ae0

user_main: /dev/null test
dev_null: Read 0 bytes from /dev/null
dev_null: Wrote 1024 bytes to /dev/null

End of test memory usage:
VARIABLE  BEFORE   AFTER
======== ======== ========
arena        5c04     5c04
ordblks         2    dump_assert_info: Current Version: NuttX  12.13.0 54ee939f82-dirty Apr  8 2026 21:57:55 arm
dump_assert_info: Assertion failed : at file: :0 task: <noname> process: <noname> 0xf051
up_dump_register: R0: 20000d00 R1: 00000000 R2: 200041b8  R3: 00000000
up_dump_register: R4: 200041b8 R5: 00000000 R6: 00000000  FP: 200007a4
up_dump_register: R8: 00000000 SB: 00000006 SL: 00000000 R11: 00000000
up_dump_register: IP: 00000000 SP: 20006448 LR: 0000159f  PC: 0000159f
up_dump_register: xPSR: 60000000 BASEPRI: 00000080 CONTROL: 00000000
up_dump_register: EXC_RETURN: 00000000
dump_stackinfo: User Stack:
dump_stackinfo:   base: 0x20004600
dump_stackinfo:   size: 00008112
dump_stackinfo:     sp: 0x20006448
stack_dump: 0x20006428: 200065b0 200065b0 20006448 20004600 200007a4 00001fb0 00000006 000016ad
stack_dump: 0x20006448: 00018276 00000000 000177e5 000177e5 0000f051 00000001 00000000 00000000
stack_dump: 0x20006468: 200041b8 20000d00 00000000 00000000 00000000 7474754e 00000058 20006660
stack_dump: 0x20006488: ffffffff 0a0065b8 200000f8 00000000 20006508 00003aa5 00000001 200026e0
stack_dump: 0x200064a8: 20002610 00000000 2e323100 302e3331 20006500 00000000 00000000 34350000
stack_dump: 0x200064c8: 33396565 32386639 7269642d 41207974 20207270 30322038 32203632 37353a31
stack_dump: 0x200064e8: 0035353a 200026e0 20004390 00000001 6d726154 00005200 00000001 00001fb0
stack_dump: 0x20006508: 200045b0 20004600 00000001 ffffffff 00000000 200019b8 20000374 200045d8
stack_dump: 0x20006528: 20000364 00000000 00000000 000046f1 00000005 0000ffcd 0001fa60 7ffffffe
stack_dump: 0x20006548: 200045dc 2000192c 00000000 0000f175 00005c04 00000001 00000022 00001a48
stack_dump: 0x20006568: 000041bc 00001a48 00004650 00000000 00000000 0000f051 00000005 200045c8
stack_dump: 0x20006588: 00000000 00000000 00000000 000048a1 0000f051 00002741 00000000 00000000
stack_dump: 0x200065a8: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    2
mxordblk     1a48     1a48
uordblks     4124     4124
fordblks     1ae0     1ae0

user_main: task_restart test

Test task_restart()
restart_main: setenv(VarName, VarValue, TRUE)
restart_main: ERROR Failed to start restart_main
ostest_main: Exiting with status 256

Is this a blocker? In any case, I don't mind opening a separate issue for this.

@github-actions github-actions bot added Size: XS The size of the change in this PR is very small Board: arm labels Apr 8, 2026
xiaoxiang781216
xiaoxiang781216 previously approved these changes Apr 9, 2026
Comment thread boards/arm/tiva/tm4c123g-launchpad/configs/nsh/defconfig Outdated
@simbit18
Copy link
Copy Markdown
Contributor

Hi @TheFakeMontyOnTheRun, please fix

../nuttx/tools/checkpatch.sh -c -u -m -g  46d2b596662b3eb08e04cd9ced548d21f4a55dea..HEAD
❌ Missing Signed-off-by
Used config files:
    1: .codespellrc
Some checks failed. For contributing guidelines, see:
  https://github.com/apache/nuttx/blob/master/CONTRIBUTING.md
Error: Process completed with exit code 1.

@TheFakeMontyOnTheRun , could you please add some doc about this board?

https://nuttx.apache.org/docs/latest/platforms/arm/tiva/index.html

As you can see, for TI/Stellaris Tiva there is only lm3s6965-ek board

board template
https://nuttx.apache.org/docs/latest/contributing/doc_templates/board.html

@TheFakeMontyOnTheRun
Copy link
Copy Markdown
Contributor Author

Sorry, I amended the previous commit and forgot to add -S. Will do it when I get home.

Regarding the lm3s6965-ek, sorry but I don't understand what you mean?

This PR fixes support for https://nuttx.apache.org/docs/latest/platforms/arm/tiva/index.html#ti-tiva-tm4c123g

@acassis
Copy link
Copy Markdown
Contributor

acassis commented Apr 10, 2026

Sorry, I amended the previous commit and forgot to add -S. Will do it when I get home.

Regarding the lm3s6965-ek, sorry but I don't understand what you mean?

This PR fixes support for https://nuttx.apache.org/docs/latest/platforms/arm/tiva/index.html#ti-tiva-tm4c123g

I think what @simbit18 said is: you should move the board to a new file, like the lm2s6965-ek and use the https://nuttx.apache.org/docs/latest/contributing/doc_templates/board.html as base: adding a board picture and update the template info about the board.

Suggestion: separate all the boards from that page in a different file, but only fix the board that you are working on (later other person will fix the other boards files)

@simbit18
Copy link
Copy Markdown
Contributor

Hi @TheFakeMontyOnTheRun, since you have the tm4c123g-launchpad board and the documentation isn't in ReStructured Text (RST), could you please add it?

You can use this template as a guide

https://nuttx.apache.org/docs/latest/contributing/doc_templates/board.html

and tm4c123g-launchpad -> README.txt

Documentation
https://nuttx.apache.org/docs/latest/contributing/documentation.html

@hartmannathan
Copy link
Copy Markdown
Contributor

Maybe the doc change should be a separate PR?

@hartmannathan
Copy link
Copy Markdown
Contributor

This is strange, CONFIG_ARM_TOOLCHAIN_BUILDROOT_OABI must have been added by mistake. I didn't know this arch supports building that way.

@hartmannathan
Copy link
Copy Markdown
Contributor

Strange... That line was added 4 years ago in PR-7100 #7100 but I never built any TM4C firmware this way. Mine has always used EABI. Perhaps @anchao has some insights?

@hartmannathan hartmannathan requested a review from anchao April 10, 2026 16:18
@acassis
Copy link
Copy Markdown
Contributor

acassis commented Apr 10, 2026

Maybe the doc change should be a separate PR?

Yes, makes sense

@TheFakeMontyOnTheRun TheFakeMontyOnTheRun force-pushed the TheFakeMontyOnTheRun-patch-1 branch from 616e525 to 7a93850 Compare April 10, 2026 18:23
@TheFakeMontyOnTheRun
Copy link
Copy Markdown
Contributor Author

Dang it, I swear I used -S when commiting this time. I need to further research how to sign it

fixes: apache#18668

Signed-off-by: Daniel Monteiro <monteiroquiet@gmail.com>
@TheFakeMontyOnTheRun TheFakeMontyOnTheRun force-pushed the TheFakeMontyOnTheRun-patch-1 branch from 7a93850 to a31cc4a Compare April 10, 2026 20:49
@acassis acassis merged commit 9d5b26e into apache:master Apr 11, 2026
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Board: arm Size: XS The size of the change in this PR is very small

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Support for TM4C123 (TI Launchpad Tiva C) seems to be broken

5 participants