-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
16 lines (16 loc) · 11.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!doctype html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><title>AllThingsEmbedded</title>
<meta name=renderer content="webkit"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1"><meta http-equiv=Cache-Control content="no-transform"><meta http-equiv=Cache-Control content="no-siteapp"><meta name=theme-color content="#f8f5ec"><meta name=msapplication-navbutton-color content="#f8f5ec"><meta name=apple-mobile-web-app-capable content="yes"><meta name=apple-mobile-web-app-status-bar-style content="#f8f5ec"><meta name=author content><meta name=description content="The place for embedded software"><meta name=keywords content="Software,Embedded,Engineering"><meta name=generator content="Hugo 0.131.0 with theme even"><link rel=canonical href=https://allthingsembedded.com/staging-web/><link href=https://allthingsembedded.com/staging-web/index.xml rel=alternate type=application/rss+xml title=AllThingsEmbedded><link href=https://allthingsembedded.com/staging-web/index.xml rel=feed type=application/rss+xml title=AllThingsEmbedded><link rel=apple-touch-icon sizes=180x180 href=/staging-web/apple-touch-icon.png><link rel=icon type=image/png sizes=32x32 href=/staging-web/favicon-32x32.png><link rel=icon type=image/png sizes=16x16 href=/staging-web/favicon-16x16.png><link rel=manifest href=/staging-web/manifest.json><link rel=mask-icon href=/staging-web/safari-pinned-tab.svg color=#5bbad5><link href=/staging-web/sass/main.min.1bc0b1ccabce7c341a15ac616ada786a029897bddcf8d31661ac69b2efb39993.css rel=stylesheet><link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@fancyapps/[email protected]/dist/jquery.fancybox.min.css integrity="sha256-7TyXnr2YU040zfSP+rEcz29ggW4j56/ujTPwjMzyqFY=" crossorigin=anonymous><meta property="og:url" content="https://allthingsembedded.com/staging-web/"><meta property="og:site_name" content="AllThingsEmbedded"><meta property="og:title" content="AllThingsEmbedded"><meta property="og:description" content="The place for embedded software"><meta property="og:locale" content="en_us"><meta property="og:type" content="website"><meta itemprop=name content="AllThingsEmbedded"><meta itemprop=description content="The place for embedded software"><meta itemprop=datePublished content="2022-01-02T17:02:33+02:00"><meta itemprop=dateModified content="2022-01-02T17:02:33+02:00"><meta name=twitter:card content="summary"><meta name=twitter:title content="AllThingsEmbedded"><meta name=twitter:description content="The place for embedded software"><!--[if lte IE 9]><script src=https://cdnjs.cloudflare.com/ajax/libs/classlist/1.1.20170427/classList.min.js></script><![endif]--><!--[if lt IE 9]><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/html5shiv.min.js></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dest/respond.min.js></script><![endif]--></head><body><div id=mobile-navbar class=mobile-navbar><div class=mobile-header-logo><a href=/ class=logo id=mobile-header-logo></a></div><div class=mobile-navbar-icon><span></span>
<span></span>
<span></span></div></div><nav id=mobile-menu class="mobile-menu slideout-menu"><ul class=mobile-menu-list><a href=/staging-web/><li class=mobile-menu-item>Home</li></a><a href=/staging-web/post/><li class=mobile-menu-item>Archives</li></a><a href=/staging-web/tags/><li class=mobile-menu-item>Tags</li></a></ul></nav><script type=text/javascript src=/js/common.js></script><script type=text/javascript>colorize_base16("mobile-header-logo","AllThingsEmbedded")</script><div class=container id=mobile-panel><header id=header class=header><div class=logo-wrapper><a href=/ class=logo id=logo-wrapper></a></div><script type=text/javascript src=/js/common.js></script><script type=text/javascript>colorize_base16("logo-wrapper","AllThingsEmbedded")</script><nav class=site-navbar><ul id=menu class=menu><li class=menu-item><a class=menu-item-link href=/staging-web/>Home</a></li><li class=menu-item><a class=menu-item-link href=/staging-web/post/>Archives</a></li><li class=menu-item><a class=menu-item-link href=/staging-web/tags/>Tags</a></li></ul></nav></header><main id=main class=main><div class=content-wrapper><div id=content class=content><section id=posts class=posts><article class=post><header class=post-header><h1 class=post-title><a class=post-link href=/staging-web/post/data_structure_static_pointer/>Data Structures: Ditto::static_ptr<Base, Derived, ...></a></h1><div class=post-meta><span class=post-time>2022-01-02 </span><span class=more-meta>993 words </span><span class=more-meta>5 mins read</span></div></header><div class=post-content><div class=post-summary>One of the nice things about C++ compared to C is its ability to define reusable types and data structures. They make code reuse easier and also help with reasoning if the abstraction is high-level enough.
Today we are going to talk about static_ptr from the library Ditto. Dynamic allocation is often forbidden when developing embedded systems. This leads to allocating most things either in the stack or globally. A static_ptr allows the user to statically allocate an object of a derived class and access it as a base class pointer.</div><div class=read-more><a href=/staging-web/post/data_structure_static_pointer/ class=read-more-link>Read more...</a></div></div></article><article class=post><header class=post-header><h1 class=post-title><a class=post-link href=/staging-web/post/bare-metal-register-access-api/>Bare Metal C++ Register Access API</a></h1><div class=post-meta><span class=post-time>2021-09-25 </span><span class=more-meta>4260 words </span><span class=more-meta>20 mins read</span></div></header><div class=post-content><div class=post-summary>Introduction to memory-mapping Note: This section is introductory material for those who are not yet familiar with the concept of memory-mapping. If you are already experienced with memory-mapping feel free to jump to the next section. Most likely you won’t miss anything new.
One of the most common ways of accessing peripherals from a CPU is memory-mapping. In short, this means that the address space of the CPU has some addresses that when accessed read/write peripheral’s registers.</div><div class=read-more><a href=/staging-web/post/bare-metal-register-access-api/ class=read-more-link>Read more...</a></div></div></article><article class=post><header class=post-header><h1 class=post-title><a class=post-link href=/staging-web/post/2020-04-11-mastering-the-gnu-linker-script/>Mastering the GNU linker script</a></h1><div class=post-meta><span class=post-time>2020-04-11 </span><span class=more-meta>2764 words </span><span class=more-meta>13 mins read</span></div></header><div class=post-content><div class=post-summary>Most people getting started with embedded development seem to find linker scripts just another piece of magic required to get up and running with their system. Even when they might already be familiar with memory-mapped peripherals and basic embedded concepts, the linker script and how it interacts with the GNU linker (ld) is still pretty mysterious.
Today we will go through the main functions of a linker script to try to shed some light onto their operation.</div><div class=read-more><a href=/staging-web/post/2020-04-11-mastering-the-gnu-linker-script/ class=read-more-link>Read more...</a></div></div></article><article class=post><header class=post-header><h1 class=post-title><a class=post-link href=/staging-web/post/2019-10-12-bootloaders-and-arm-cortex-m-microcontrollers-booting-the-target-application/>Bootloaders and ARM Cortex-M microcontrollers: Booting the target application</a></h1><div class=post-meta><span class=post-time>2019-10-12</span><div class=post-category><a href=/staging-web/categories/bootloader/>Bootloader</a></div><span class=more-meta>1085 words </span><span class=more-meta>6 mins read</span></div></header><div class=post-content><div class=post-summary>In a previous blog we discussed the role of the NVIC in ARM Cortex-M microcontrollers. This peripheral will play a central role in booting our target application. First of all, we need to discuss the boot process in an ARM Cortex-M microcontroller.
Boot process After Power On Reset the microcontroller assumes the NVIC table is located at address 0x00000000. The processor fetches the first two words in the NVIC table, corresponding to the top of the stack and the reset vector.</div><div class=read-more><a href=/staging-web/post/2019-10-12-bootloaders-and-arm-cortex-m-microcontrollers-booting-the-target-application/ class=read-more-link>Read more...</a></div></div></article><article class=post><header class=post-header><h1 class=post-title><a class=post-link href=/staging-web/post/2019-05-31-bootloaders-and-arm-cortex-m-microcontrollers-design/>Bootloaders and ARM Cortex-M microcontrollers: Design</a></h1><div class=post-meta><span class=post-time>2019-05-31</span><div class=post-category><a href=/staging-web/categories/bootloader/>Bootloader</a></div><span class=more-meta>1693 words </span><span class=more-meta>8 mins read</span></div></header><div class=post-content><div class=post-summary>Welcome to the second entry of the Bootloader series! Today we are going to be discussing the design and basic architecture of the bootloader application.
As we talked about on the last post, we are not going to be using any libraries, other than the C++ standard library in order to maximize portability and performance and limit code bloat. This means that we will be writing our own Hardware Abstraction Layer for all the peripherals and core features of the bootloader.</div><div class=read-more><a href=/staging-web/post/2019-05-31-bootloaders-and-arm-cortex-m-microcontrollers-design/ class=read-more-link>Read more...</a></div></div></article></section><nav class=pagination><a class=next href=/staging-web/page/2/><span class=next-text>Next</span>
<i class="iconfont icon-right"></i></a></nav></div></div></main><footer id=footer class=footer><div class=social-links><a href=mailto:[email protected] class="iconfont icon-email" title=email></a><a href=https://twitter.com/Javier_varez class="iconfont icon-twitter" title=twitter></a><a href="https://www.linkedin.com/in/javieralvarez17/?locale=en_US" class="iconfont icon-linkedin" title=linkedin></a><a href=https://github.com/Javier-varez class="iconfont icon-github" title=github></a><a href=https://allthingsembedded.com/staging-web/index.xml type=application/rss+xml class="iconfont icon-rss" title=rss></a></div><div class=copyright><span class=power-by>Powered by <a class=hexo-link href=https://gohugo.io>Hugo</a>
</span><span class=division>|</span>
<span class=theme-info>Theme -
<a class=theme-link href=https://github.com/olOwOlo/hugo-theme-even>Even</a>
</span><span class=copyright-year>©
2018 -
2024<span class=heart><i class="iconfont icon-heart"></i></span><span></span></span></div></footer><div class=back-to-top id=back-to-top><i class="iconfont icon-up"></i></div></div><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin=anonymous></script><script src=https://cdn.jsdelivr.net/npm/[email protected]/dist/slideout.min.js integrity="sha256-t+zJ/g8/KXIJMjSVQdnibt4dlaDxc9zXr/9oNPeWqdg=" crossorigin=anonymous></script><script src=https://cdn.jsdelivr.net/npm/@fancyapps/[email protected]/dist/jquery.fancybox.min.js integrity="sha256-XVLffZaxoWfGUEbdzuLi7pwaUJv1cecsQJQqGLe7axY=" crossorigin=anonymous></script><script type=text/javascript src=/staging-web/js/main.min.4ae89da218555efa0e7093a20b92017d2e1202b66fff9fc2edf4cb8d44b44c6e.js></script><script type=text/javascript>window.MathJax={tex:{}}</script><script async src=https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js integrity="sha256-HGLuEfFcsUJGhvB8cQ8nr0gai9EucOOaIxFw7qxmd+w=" crossorigin=anonymous></script></body></html>