RSSAmplifier

Blog

jacobmossberg.se

jmossberg.github.ioRSS feed ↗10 posts

Latest posts

Travel report to Meeting C++ 2018

Contents Introduction Workshop (Wednesday) Day 1 (Thursday) Opening Keynote: The Next Big Thing (Andrei Alexandrescu) A Little Order! (Fred Tingaud) Data-oriented design in practice (Stoyan Nikolov) std::variant and the power of pattern matching (Nikolai Wuttke) Taming Dynamic Memory - An Introduction to Custom Allocators (Andreas Weis) Day 2 (Friday) Middle Keynote: The Truth of a Procedure (Lisa…

Travel report to Meeting C++ 2017

Contents Introduction Meeting C++ links Day 1 (Thursday) Opening keynote: Better Code - Human interface (Sean Parent) Practical C++17 (Jason Turner) Strong types Modern C++ testing with Catch2 Beyond the compiler: Advanced tools for better productivity Day 2 It’s complicated An inspiring introduction to template metaprogramming Concepts Driven Design Declarative Thinking, Declarative Practice…

Talk at Foss-gbg about running C bare metal on ARM Cortex M3

I gave a talk at Foss-gbg yesterday about Running C programs bare metal on ARM using the GNU toolchain . The talk was based on two of my blog posts: Run a minimalistic program written in assembler on STM32-H103 development board Run a C program bare metal on an ARM Cortex M3 Twitter: Tweet from Johan Thelin The presentation is available as a pdf file:…

Run a C program bare bone on an ARM Cortex M3

This post has been renamed to Run a C program bare metal on an ARM Cortex M3 .

Run a C program bare metal on an ARM Cortex M3

Edit 2018-08-17: Add section “Files” Contents Introduction Files Hardware equipment Software tools C program ARM assembler code ARM assembly attributes Variable a Variable b Variable sum Start of main() function Variable assignment in main() function End of main() function Labels for memory locations of static variables ARM Cortex M3 memory map ARM Cortex M3 boot sequence Stack pointer C…

Use GDB on an ARM assembly program

Introduction The goal of this article is to use the GNU Project debugger (gdb) on an ARM assembly program. We will use the same program and tools as in Run a minimalistic program written in assembler on STM32-H103 development board . GDB documentation is available on the following links: GDB documentation start page: https://www.sourceware.org/gdb/documentation/ GDB User Manual:…

Run a minimalistic program written in assembler on STM32-H103 development board

Introduction The goal of this article is to write a minimalistic program in ARM assembler and prove that it runs correctly on a STM32-H103 development board. Hardware equipment: An ARM-USB-OCD-H JTAG adapter from Olimex A STM32-H103 development board with an ARM Cortex M3 (STM32F103RBT6) Software tools: The following tools that are part of GNU Binutils : GNU Assembler (gas) for compiling GNU…

Using OpenOCD to flash ARM Cortex M3

Introduction to OpenOCD OpenOCD is a Open On-Chip debugger that provides programming, debugging and boundary-scan testing for embedded devices. OpenOCD acts as a server and accepts incoming connections from GDB via port 3333 or telnet via port 4444. GDB is used for source file step debugging. The telnet connection is used for flashing. OpenOCD connects to the JTAG adapter. The JTAG adapter…

Travel report to Meeting C++ 2016

Train trip to Berlin Meeting C++ 2016 took place at Andels Hotel in Berlin at 18th and 19th November. This was my first C++ conference so it was exciting to leave Gothenburg on the train to Copenhagen early in the morning of the 16th. After 12 hours and one boat trip later I arrived in Berlin. We only had a small delay at the end due to the fact that Barack Obama drove through Berlin at the same…

Test Driven Development (TDD) Course For Embedded Projects

I offer a one day course in Test Driven Development (TDD) for embedded projects. Course Content TDD Microcycle Write a test Make sure it fails Make it pass Refactoring Writing unit tests Unit test phases xUnit Test Frameworks Outside-In vs. Inside-Out TDD Test doubles Stubs, spies and mocks Dependency injection Mock frameworks Replace hardware with test doubles Refactoring Production code smells…