Showing posts with label gcc. Show all posts
Showing posts with label gcc. Show all posts

Tuesday, April 30, 2024

Generate cross compile toolchain in Gentoo

Gentoo crossdev

Table of Contents

1. Introcution

Crosstool-ng is commonly used to build a cross-compiler toolchain in various Linux distributions. In Gentoo, the cross-compiler environment generator, crossdev, has been made for our convinience. It is a set of bash scripts that utilize emerge to provide a system integrated cross-compilation capability.

In this article, we are going to walk through building cross-compiler toolchain for an operating system and the embedded target (bare matel).

Emerge to install crossdev.

$ sudo emerge --ask sys-devel/crossdev

Sunday, December 18, 2022

C11 (C standard revision) features

C11 revision

1 Overview

C11 is the informal name for ISO/IEC 9899:2011, the current standard for the C language that was ratified by ISO in December 2011.

It standardizes many features for safer programming, such as removal of gets() function.

Additionally, C11 adds concurrency support, type-generic expressions, alignment-related facilities, static assertion, unicode support, floating-point characteristic macros, no-return functions, anonymous structures and unions, and various bound-checking and reentrancy functions.

The following examples demonstrating C11 features can be compiled with options such as

clang -std=c11 ex.c

2 Multiple threading

C11 standardized multi-threading support.

It introduces new headers threads.h and stdatomic.h, supporting multiple threads of execution:

  • threads creation and management
  • mutexes
  • conditional variables
  • atomic objects
  • thread specific storage

Thursday, July 3, 2014

STM32F401 Disco sensor demo with Bluetooth Low Energy

1 Introduction

stm32f4-bluenrg is a sensor demo project for STM32F401 Discovery board in conjunction with a BlueNRG module.

The BlueNRG app allows you to access the sensor data directly from the mobile device over Bluetooth Low Energy.

Sunday, May 4, 2014

uGFX Notepad on STM32F429I Discovery FreeRTOS

1 Introduction

FreeRTOS 8.0.0 on 32F429IDISCOVERY board that demostrates uGFX notepad.

Tuesday, April 22, 2014

FreeRTOS 8.0.0 porting on STM32F429I Discovery Board on Linux

1 Introduction

FreeRTOS 8.0.0 porting on 32F429IDISCOVERY board using GCC on linux.

Friday, March 14, 2014

STM32F429I Discovery SMS Emulator on Linux

1 Introduction

Alessandro Rocchegiani released some interesting projects on STM32 series MCUs. This article introduces the adding support to be built and burned under Linux, with the project STM32F429 Discovery Sega Master System Emulator as an example.

Thursday, December 29, 2011

GDB Debugging ARM U-Boot on QEMU

1 Introduction


QEMU is a generic and open source machine emulator and virtualizer. In this article, we will use it as a machine emulator and run the U-Boot on top of it. It will also be demonstrated about how to debug U-Boot with GDB.

Monday, June 21, 2010

Step by step to MIPS assembly

In this article, I am going to introduce how to write MIPS assembly. All the examples introduced will able to be assembled or compiled into actual executable programs. They can be executed on a MIPS machine running Linux. So, let's forget the simulator and come to real world :-P. The first is the most simple program.

Friday, December 4, 2009

MIPS calling convention with GCC

In this article, we are going to learn MIPS calling conventions by examples. And we will focus on the one used by GCC. All the examples will be compiled with GCC flag -mno-abicalls not generating SVR4-style position-independent code. Normally -mabicalls should be used, we disable it for the simplification of assembly codes.

Thursday, November 19, 2009

C99 Features

Here is a simple example demonstrating some of the C99 features. It is a test program I wrote for learning from C99 standard. Although it doesn't cover all the new features for C99, I think it is at least a start for people who are not familiar to C99 like me.

Click HERE to download c99.c.

Monday, November 16, 2009

Learning x86 Calling Conventions by Examples

The x86 architecture features many different calling conventions. There are three major calling conventions in use: __cdecl, __stdcall, and __fastcall. We are going to force the compiler to generate assembly with different calling conventions in order to see how they work.

Sunday, November 8, 2009

Understand Weak Symbols by Examples

Wikipedia defines the weak symbols: "In computing, a weak symbol is a symbol definition in an object file or dynamic library that may be overridden by other symbol definitions, its value will be zero if no definition found by loader." In other words, we can define a symbol that doesn't need to be resolved at link time. It is a very well-known feature and used a lot in Linux Kernel, Glibc, and so on.