Share the Experience of Using Embedded Development BoardJian-Hong Pan
(Including Demo videos at end of the description)
Due to the pandemic in the past few years, lacking chips became one of the reasons that vendors cannot produce products. That affects industry, automotive and IT, etc. In addition, many countries propose new policies/acts which start to investigate the source of products recently. Therefore, keeping the flexibility of the usage of parts to maintain the robustness of productivity and service is an important skill. This talk will list the toolchains & debug tools for common chip architectures and share some development experience.
This talk will share how to use the open source toolchain and debug tools to develop and debug, then flash the program to the ARM Cortex-M development board. The same idea can be used on other chip’s development boards. Will have some examples for ARM Cortex-A and RISC-V 32 & 64 Bits environment. Besides, will share the experience of sending patches to the debug tool and co-working with upstream, too.
Demo Videos:
* Develop with Nuvoton's NuTiny-SDK-NUC472 https://www.youtube.com/watch?v=Yz9uw2_9KS8
* Develop with Longan Nano https://www.youtube.com/watch?v=IFqDM_GLUfo
* Boot Custom Linux Image on Raspberry Pi 4B https://www.youtube.com/watch?v=t3PjTtf5MvU
* Boot Linux on QEMU RISC-V 64 Bits VM https://www.youtube.com/watch?v=8c7zfvJYzSo
* Develop with Arduino Nano https://www.youtube.com/watch?v=sU7X9Q35hhY
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Jian-Hong Pan
Flatpak is a framework for distributing desktop applications and supported by most of Linux distributions. This talk shares how to package a HTTP server written in Python as a Flatpak app. And, runs it like a desktop application by launching a browser connecting to the server automatically.
https://hackmd.io/@starnight/Have_an_HTTP_Server_in_Flatpak
Launch the First Process in Linux SystemJian-Hong Pan
The session: https://coscup.org/2022/en/session/AGCMDJ
After Linux kernel boots, it will try to launch first process “init” in User Space. Then, the system begins the featured journey of the Linux distribution.
This sharing takes Busybox as the example and shows that how does Linux kernel find the “init” which directs to the Busybox. And, what will Busybox do and how to get the console. Try to make it like a simple Linux system.
Before Linux kernel launches “init” process, the file system and storage corresponding drivers/modules must be loaded to find the “init”. Besides, to mount the root file system correctly, the kernel boot command must include the root device and file system format parameters.
On the other hand, the Busybox directed from “init” is a lightweight program, but has rich functions, just like a Swiss Army Knife. So, it is usually used on the simple environment, like embedded Linux system.
This sharing will have a demo on a virtual machine first, then on the Raspberry Pi.
Drafts:
* https://hackmd.io/@starnight/Busbox_as_the_init
* https://hackmd.io/@starnight/Build_Alpines_Root_Filesystem_Bootstrap
Relate idea: https://hackmd.io/@starnight/Systems_init_and_Containers_COMMAND_Dockerfiles_CMD
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
https://coscup.org/2021/en/session/39M73K
https://www.youtube.com/watch?v=L_Gyvdl_d_k
Engineers have plenty of debug tools for user space programs development, code tracing, debugging and analyzing. Except “printk”, do we have any other debug tools for Linux kernel development? The “KGDB” mentioned in Linux kernel document provides another possibility.
Will share how to experiment with the KGDB in a virtual machine. And, use GDB + OpenOCD + JTAG + Raspberry Pi in the real environment as the demo in this talk.
開發 user space 軟體時,工程師們有方便的 debug 工具進行查找、分析、除錯。但在 Linux kernel 的開發,除了 printk 外,還可以有哪些工具可以使用呢?從 Linux kernel document 可以看到 KGDB 相關的資訊,提供了在 kernel 除錯時的另一個可能性。
本次將分享,從建立最簡單環境的虛擬機機開始,到實際使用 GDB + OpenOCD + JTAG + Raspberry Pi 當作展示範例。
A Journey to Boot Linux on Raspberry PiJian-Hong Pan
Each processor/chip architecture has its own procedure to boot the kernel. It works with desgined partition layout and vendor specific firmwares/bootloaders in the boot partition. We can learn the related knowledge from the Raspbian image for Raspberry Pi, which is the board we can obtain easily. However, the diversity between the special booting procedures with specific firmwares/bootloaders increases the complexity for distribution maintainers. It will be great if there is a way to make it more generic that can be applied to most of the chip architectures/boards to boot up the system.
After referring to some Linux distributions, we learned U-Boot may play a role in the solution. It splits the booting procedure into hardware specific and generic system parts. This helps distribution maintainers deploy the generic system with OSTree, including device trees.
Let’s deep dive into this magic booting procedure!
The document discusses a simple MODBUS server, including specifications for MODBUS over serial and TCP/IP. It provides an overview of MODBUS client-server communication and function code 01 for reading coils. The presentation includes a demo of a MODBUS server and references specifications for the MODBUS application protocol.
Software Packaging for Cross OS DistributionJian-Hong Pan
The document discusses software packaging for cross-platform distribution by building Debian packages inside a container. It provides examples of building a simple "Hello World" package and modifying an existing "nvidia-graphics-drivers" package. It demonstrates setting up a Debian environment in a Docker container, creating packages without root privileges, and implementing packaging as infrastructure code using a Dockerfile. The document promotes open source and discusses using Podman instead of Docker for containerization.
Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!Jian-Hong Pan
This document describes a data service for polar geographic information system (GIS) visualization. It discusses three potential features of the service including displaying the real GIS history of polar regions, modeling species and food chains, and showing environmental changes and impacts. It outlines the data requirements and sources, such as digital elevation models, sea level/ice data, and species distributions. It also discusses the challenges of working with open data, including inconsistent formats, missing data, and difficulties searching. The architecture would collect and convert open data sources into standardized formats to support audiences and inspire them through interactive polar visualizations.
Share the Experience of Using Embedded Development BoardJian-Hong Pan
(Including Demo videos at end of the description)
Due to the pandemic in the past few years, lacking chips became one of the reasons that vendors cannot produce products. That affects industry, automotive and IT, etc. In addition, many countries propose new policies/acts which start to investigate the source of products recently. Therefore, keeping the flexibility of the usage of parts to maintain the robustness of productivity and service is an important skill. This talk will list the toolchains & debug tools for common chip architectures and share some development experience.
This talk will share how to use the open source toolchain and debug tools to develop and debug, then flash the program to the ARM Cortex-M development board. The same idea can be used on other chip’s development boards. Will have some examples for ARM Cortex-A and RISC-V 32 & 64 Bits environment. Besides, will share the experience of sending patches to the debug tool and co-working with upstream, too.
Demo Videos:
* Develop with Nuvoton's NuTiny-SDK-NUC472 https://www.youtube.com/watch?v=Yz9uw2_9KS8
* Develop with Longan Nano https://www.youtube.com/watch?v=IFqDM_GLUfo
* Boot Custom Linux Image on Raspberry Pi 4B https://www.youtube.com/watch?v=t3PjTtf5MvU
* Boot Linux on QEMU RISC-V 64 Bits VM https://www.youtube.com/watch?v=8c7zfvJYzSo
* Develop with Arduino Nano https://www.youtube.com/watch?v=sU7X9Q35hhY
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Jian-Hong Pan
Flatpak is a framework for distributing desktop applications and supported by most of Linux distributions. This talk shares how to package a HTTP server written in Python as a Flatpak app. And, runs it like a desktop application by launching a browser connecting to the server automatically.
https://hackmd.io/@starnight/Have_an_HTTP_Server_in_Flatpak
Launch the First Process in Linux SystemJian-Hong Pan
The session: https://coscup.org/2022/en/session/AGCMDJ
After Linux kernel boots, it will try to launch first process “init” in User Space. Then, the system begins the featured journey of the Linux distribution.
This sharing takes Busybox as the example and shows that how does Linux kernel find the “init” which directs to the Busybox. And, what will Busybox do and how to get the console. Try to make it like a simple Linux system.
Before Linux kernel launches “init” process, the file system and storage corresponding drivers/modules must be loaded to find the “init”. Besides, to mount the root file system correctly, the kernel boot command must include the root device and file system format parameters.
On the other hand, the Busybox directed from “init” is a lightweight program, but has rich functions, just like a Swiss Army Knife. So, it is usually used on the simple environment, like embedded Linux system.
This sharing will have a demo on a virtual machine first, then on the Raspberry Pi.
Drafts:
* https://hackmd.io/@starnight/Busbox_as_the_init
* https://hackmd.io/@starnight/Build_Alpines_Root_Filesystem_Bootstrap
Relate idea: https://hackmd.io/@starnight/Systems_init_and_Containers_COMMAND_Dockerfiles_CMD
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
https://coscup.org/2021/en/session/39M73K
https://www.youtube.com/watch?v=L_Gyvdl_d_k
Engineers have plenty of debug tools for user space programs development, code tracing, debugging and analyzing. Except “printk”, do we have any other debug tools for Linux kernel development? The “KGDB” mentioned in Linux kernel document provides another possibility.
Will share how to experiment with the KGDB in a virtual machine. And, use GDB + OpenOCD + JTAG + Raspberry Pi in the real environment as the demo in this talk.
開發 user space 軟體時,工程師們有方便的 debug 工具進行查找、分析、除錯。但在 Linux kernel 的開發,除了 printk 外,還可以有哪些工具可以使用呢?從 Linux kernel document 可以看到 KGDB 相關的資訊,提供了在 kernel 除錯時的另一個可能性。
本次將分享,從建立最簡單環境的虛擬機機開始,到實際使用 GDB + OpenOCD + JTAG + Raspberry Pi 當作展示範例。
A Journey to Boot Linux on Raspberry PiJian-Hong Pan
Each processor/chip architecture has its own procedure to boot the kernel. It works with desgined partition layout and vendor specific firmwares/bootloaders in the boot partition. We can learn the related knowledge from the Raspbian image for Raspberry Pi, which is the board we can obtain easily. However, the diversity between the special booting procedures with specific firmwares/bootloaders increases the complexity for distribution maintainers. It will be great if there is a way to make it more generic that can be applied to most of the chip architectures/boards to boot up the system.
After referring to some Linux distributions, we learned U-Boot may play a role in the solution. It splits the booting procedure into hardware specific and generic system parts. This helps distribution maintainers deploy the generic system with OSTree, including device trees.
Let’s deep dive into this magic booting procedure!
The document discusses a simple MODBUS server, including specifications for MODBUS over serial and TCP/IP. It provides an overview of MODBUS client-server communication and function code 01 for reading coils. The presentation includes a demo of a MODBUS server and references specifications for the MODBUS application protocol.
Software Packaging for Cross OS DistributionJian-Hong Pan
The document discusses software packaging for cross-platform distribution by building Debian packages inside a container. It provides examples of building a simple "Hello World" package and modifying an existing "nvidia-graphics-drivers" package. It demonstrates setting up a Debian environment in a Docker container, creating packages without root privileges, and implementing packaging as infrastructure code using a Dockerfile. The document promotes open source and discusses using Podman instead of Docker for containerization.
Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!Jian-Hong Pan
This document describes a data service for polar geographic information system (GIS) visualization. It discusses three potential features of the service including displaying the real GIS history of polar regions, modeling species and food chains, and showing environmental changes and impacts. It outlines the data requirements and sources, such as digital elevation models, sea level/ice data, and species distributions. It also discusses the challenges of working with open data, including inconsistent formats, missing data, and difficulties searching. The architecture would collect and convert open data sources into standardized formats to support audiences and inspire them through interactive polar visualizations.
This document discusses LoRaWAN class modules and subsystems for LoRa devices. It provides an overview of LoRa hardware, IEEE 802.15.4, and LoRaWAN class A, B and C. It also describes a class module that could implement an IEEE 802.15.4 MAC over the LoRa PHY and a subsystem for LoRa devices, as the IEEE 802.15.4 over LoRa PHY would not be compatible with original IEEE 802.15.4 devices.
Let's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoTJian-Hong Pan
Video: https://www.youtube.com/watch?v=_lGN-LDyl2I
在萬物聯網的時代,透過通訊技術將量測到的物理量傳送到遠端伺服器是很一般的作法。但要這「通訊」如何達到低成本、符合使用情境的條件,仍然是個經典的問題。
特別是在需要長距離、低功耗與長生命週期的需求下,或許以 Low-Power Wide-Area Network (LPWAN) 為基礎的 LoRa 通訊技術是個不錯的選擇。
若是在程式底層的部份,將此基礎建設的通訊技術寫成個 LoRa 的 Linux Device Driver,一般使用者就可以單純專注在應用層面的開發、降低進入門檻。
這次將介紹如何寫出這 IEEE 802.15.4 MAC over LoRa PHY 的 Linux Device Driver。
期望經由此 driver 合併 IEEE 802.15.4 MAC 的 Cluster Tree Network topology 與 LoRa PHY 的 link budget 優勢,達到超大範圍的通訊覆蓋面積,以達到相關需求。
In the Internet of Things' era, transferring the measured physical values to the servers through the communication technology is the popular usage template. However, finding the lowest cost method that fulfills the usage scenarios, power issues and the real time requirements still is a classic engineering problem.
Under the long range and low power consumption for longer life cycle conditions, LoRa which is based on Low-Power Wide-Area Network (LPWAN) might be one of the good choices. Moreover, if it goes with a LoRa Linux device driver, general users can focus on the development of related upper layer applications.
This time, I will introduce how to write an IEEE 802.15.4 MAC over LoRa PHY Linux device driver and its architecture. Hope this approach will gain more benefits by combining both advantages: Cluster Tree Network of IEEE 802.15.4 MAC and the good link budget of LoRa PHY.
The Considerations for Internet of Things @ 2017Jian-Hong Pan
物聯網是一門透過通訊,將端點蒐集到的資料,集中關聯分析,並將分析結果用以決策並回饋的工程藝術。
本次的分享將從物聯網的目的當作進入點,接著分享可能的佈署架構。並概述目前各個常用的通訊標準、協定,以及其所屬的角色。
除此之外,也會分享去年到柏林參加Linux Foundation舉辦的Open IoT Summit Europe 2016的心得。
在此,帶回一些國外對於物聯網節點的佈署、更新或維護的看法、作法。
另外,也會分享一些物聯網可能需要考量的資訊安全議題。
IoT is a kind of engineering art, which analyzes the collected data from
the device nodes through the communication and has the result for the
decision making and feedback.
This sharing goes for the purpose of IoT and it's deployment structure.
Then, the slide introduces the most used communication standards or
protocols in IoT and their roles.
Besides, also shares what I have got from the Open IoT Summit Europe 2016
which was held by Linux Foundation in Berlin last year.
It introduces how will the device nodes be deployed, updated and maintained.
Finally, the slide provides some security issues that should be considered
in IoT.
Build a Micro HTTP Server for Embedded SystemJian-Hong Pan
Apache HTTP Server, NGINX .. are famous web servers in the world. More and more web server frameworks come and follow up, like Node.js, Bottle of Python .., etc. All of them make us have the abilities to get or connect to the resources behind the web server. However, considering the limitations and portability, they may not be ported directly to the embedded system which has restricted resources. Therefore, we need to re-implement an HTTP server to fulfill that requirement.
I will introduce how do I use the convenience of Python to implement a Micro HTTP Server prototype according to RFC 2616/HTTP 1.1. Then, re-write the codes in C to build the Micro HTTP Server and do the automated testing with Python Unit Testing Framework. Finally, I combined the Micro HTTP Server with an RTOS and light the LEDs on an STM32F4-Discovery board.
Micro HTTP Server Implemented in C @ COSCUP 2016Jian-Hong Pan
The document discusses implementing a micro HTTP server in C for use on an embedded system with limited resources. It provides an overview of HTTP protocol basics including requests, responses, headers and bodies. It then discusses challenges of implementing an HTTP server on resource-constrained embedded devices and introduces approaches like using I/O multiplexing to handle requests from multiple clients concurrently without threads. The document proposes implementing a micro HTTP server in C using these techniques to run on an embedded system and real-time operating system.
The document discusses binding Python and C to create C extensions for Python 3. It covers the key steps: including Python headers, declaring C functions, defining a mapping of functions to Python methods, defining the Python module, and implementing an initialization function. Examples are provided for functions without arguments, with passed arguments, and returning variables. Differences between Python 2 and 3 bindings are that Python 3 uses a module definition structure and PyInit_ initialization while Python 2 uses an init_ initialization.
This document discusses load and stress testing web applications using Apache JMeter. It provides an overview of identifying bottlenecks in a system, how HTTP requests and responses work, and how to use Apache JMeter to perform load and stress tests. Key features of JMeter like installing it, creating test plans, running tests, and viewing results are described. The document also covers more advanced JMeter functions such as using variables, parsing responses, and running tests from the command line using Apache Ant.
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDevJian-Hong Pan
This document provides an overview of how to configure GPIO pins on an STM32F4 microcontroller. It begins with the speaker's background and experience with ARM embedded systems. It then discusses the GPIO block of the STM32F4 chip and shows code from an example blinky project that initializes GPIO pins to blink LEDs. The document explains where the GPIO API definitions are located in the STM32F4 header files and library. It provides details on configuring GPIO pins for input or output modes. Finally, it summarizes the key GPIO registers used to configure the pin modes and states.
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code MeetupJian-Hong Pan
The document introduces several tools for debugging C/C++ programs within a terminal environment, including vimGdb, clewn, pyclewn, Conque GDB, and cgdb. It recommends cgdb as the best option, describing it as a lightweight curses-based interface that splits the screen to simultaneously display source code and the GNU Debugger terminal.
Make Your Own Developement Board @ 2014.4.21 JuluOSDevJian-Hong Pan
This document discusses building a development board for an ATMega8 microcontroller that functions as a simple oscilloscope. It outlines meeting specifications, minimizing costs, and completing the project in the shortest time as the core engineering values. It provides the specifications for the oscilloscope, discusses using AVR microcontroller features to implement it, and lists the tools needed including an AVR compiler and programmer. Circuits for a function generator and integrating the oscilloscope with a Python console are presented. The document emphasizes applying knowledge from school to implementation and building your own tools.
The Simple Scheduler in Embedded System @ OSDC.TW 2014Jian-Hong Pan
The document describes a simple scheduler module implemented in C for embedded systems. It breaks processes into small jobs represented by functions that are scheduled in a first-in, first-out queue without preemption. This allows embedding an operating system concept into simple systems using only functions and a ready queue. Interrupts can add jobs to the queue. The scheduler and example oscilloscope application demonstrate scheduling without process state using only callbacks.
Node.js is a server-side JavaScript platform for building scalable network applications. It allows writing code using JavaScript for non-browser environments like servers. Node.js uses an event-driven, asynchronous I/O model that makes it lightweight and efficient. A simple web server can be written in just a few lines of Node.js code. Node.js has a thriving ecosystem of external modules that help build full-stack JavaScript applications.
This document discusses LoRaWAN class modules and subsystems for LoRa devices. It provides an overview of LoRa hardware, IEEE 802.15.4, and LoRaWAN class A, B and C. It also describes a class module that could implement an IEEE 802.15.4 MAC over the LoRa PHY and a subsystem for LoRa devices, as the IEEE 802.15.4 over LoRa PHY would not be compatible with original IEEE 802.15.4 devices.
Let's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoTJian-Hong Pan
Video: https://www.youtube.com/watch?v=_lGN-LDyl2I
在萬物聯網的時代,透過通訊技術將量測到的物理量傳送到遠端伺服器是很一般的作法。但要這「通訊」如何達到低成本、符合使用情境的條件,仍然是個經典的問題。
特別是在需要長距離、低功耗與長生命週期的需求下,或許以 Low-Power Wide-Area Network (LPWAN) 為基礎的 LoRa 通訊技術是個不錯的選擇。
若是在程式底層的部份,將此基礎建設的通訊技術寫成個 LoRa 的 Linux Device Driver,一般使用者就可以單純專注在應用層面的開發、降低進入門檻。
這次將介紹如何寫出這 IEEE 802.15.4 MAC over LoRa PHY 的 Linux Device Driver。
期望經由此 driver 合併 IEEE 802.15.4 MAC 的 Cluster Tree Network topology 與 LoRa PHY 的 link budget 優勢,達到超大範圍的通訊覆蓋面積,以達到相關需求。
In the Internet of Things' era, transferring the measured physical values to the servers through the communication technology is the popular usage template. However, finding the lowest cost method that fulfills the usage scenarios, power issues and the real time requirements still is a classic engineering problem.
Under the long range and low power consumption for longer life cycle conditions, LoRa which is based on Low-Power Wide-Area Network (LPWAN) might be one of the good choices. Moreover, if it goes with a LoRa Linux device driver, general users can focus on the development of related upper layer applications.
This time, I will introduce how to write an IEEE 802.15.4 MAC over LoRa PHY Linux device driver and its architecture. Hope this approach will gain more benefits by combining both advantages: Cluster Tree Network of IEEE 802.15.4 MAC and the good link budget of LoRa PHY.
The Considerations for Internet of Things @ 2017Jian-Hong Pan
物聯網是一門透過通訊,將端點蒐集到的資料,集中關聯分析,並將分析結果用以決策並回饋的工程藝術。
本次的分享將從物聯網的目的當作進入點,接著分享可能的佈署架構。並概述目前各個常用的通訊標準、協定,以及其所屬的角色。
除此之外,也會分享去年到柏林參加Linux Foundation舉辦的Open IoT Summit Europe 2016的心得。
在此,帶回一些國外對於物聯網節點的佈署、更新或維護的看法、作法。
另外,也會分享一些物聯網可能需要考量的資訊安全議題。
IoT is a kind of engineering art, which analyzes the collected data from
the device nodes through the communication and has the result for the
decision making and feedback.
This sharing goes for the purpose of IoT and it's deployment structure.
Then, the slide introduces the most used communication standards or
protocols in IoT and their roles.
Besides, also shares what I have got from the Open IoT Summit Europe 2016
which was held by Linux Foundation in Berlin last year.
It introduces how will the device nodes be deployed, updated and maintained.
Finally, the slide provides some security issues that should be considered
in IoT.
Build a Micro HTTP Server for Embedded SystemJian-Hong Pan
Apache HTTP Server, NGINX .. are famous web servers in the world. More and more web server frameworks come and follow up, like Node.js, Bottle of Python .., etc. All of them make us have the abilities to get or connect to the resources behind the web server. However, considering the limitations and portability, they may not be ported directly to the embedded system which has restricted resources. Therefore, we need to re-implement an HTTP server to fulfill that requirement.
I will introduce how do I use the convenience of Python to implement a Micro HTTP Server prototype according to RFC 2616/HTTP 1.1. Then, re-write the codes in C to build the Micro HTTP Server and do the automated testing with Python Unit Testing Framework. Finally, I combined the Micro HTTP Server with an RTOS and light the LEDs on an STM32F4-Discovery board.
Micro HTTP Server Implemented in C @ COSCUP 2016Jian-Hong Pan
The document discusses implementing a micro HTTP server in C for use on an embedded system with limited resources. It provides an overview of HTTP protocol basics including requests, responses, headers and bodies. It then discusses challenges of implementing an HTTP server on resource-constrained embedded devices and introduces approaches like using I/O multiplexing to handle requests from multiple clients concurrently without threads. The document proposes implementing a micro HTTP server in C using these techniques to run on an embedded system and real-time operating system.
The document discusses binding Python and C to create C extensions for Python 3. It covers the key steps: including Python headers, declaring C functions, defining a mapping of functions to Python methods, defining the Python module, and implementing an initialization function. Examples are provided for functions without arguments, with passed arguments, and returning variables. Differences between Python 2 and 3 bindings are that Python 3 uses a module definition structure and PyInit_ initialization while Python 2 uses an init_ initialization.
This document discusses load and stress testing web applications using Apache JMeter. It provides an overview of identifying bottlenecks in a system, how HTTP requests and responses work, and how to use Apache JMeter to perform load and stress tests. Key features of JMeter like installing it, creating test plans, running tests, and viewing results are described. The document also covers more advanced JMeter functions such as using variables, parsing responses, and running tests from the command line using Apache Ant.
Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDevJian-Hong Pan
This document provides an overview of how to configure GPIO pins on an STM32F4 microcontroller. It begins with the speaker's background and experience with ARM embedded systems. It then discusses the GPIO block of the STM32F4 chip and shows code from an example blinky project that initializes GPIO pins to blink LEDs. The document explains where the GPIO API definitions are located in the STM32F4 header files and library. It provides details on configuring GPIO pins for input or output modes. Finally, it summarizes the key GPIO registers used to configure the pin modes and states.
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code MeetupJian-Hong Pan
The document introduces several tools for debugging C/C++ programs within a terminal environment, including vimGdb, clewn, pyclewn, Conque GDB, and cgdb. It recommends cgdb as the best option, describing it as a lightweight curses-based interface that splits the screen to simultaneously display source code and the GNU Debugger terminal.
Make Your Own Developement Board @ 2014.4.21 JuluOSDevJian-Hong Pan
This document discusses building a development board for an ATMega8 microcontroller that functions as a simple oscilloscope. It outlines meeting specifications, minimizing costs, and completing the project in the shortest time as the core engineering values. It provides the specifications for the oscilloscope, discusses using AVR microcontroller features to implement it, and lists the tools needed including an AVR compiler and programmer. Circuits for a function generator and integrating the oscilloscope with a Python console are presented. The document emphasizes applying knowledge from school to implementation and building your own tools.
The Simple Scheduler in Embedded System @ OSDC.TW 2014Jian-Hong Pan
The document describes a simple scheduler module implemented in C for embedded systems. It breaks processes into small jobs represented by functions that are scheduled in a first-in, first-out queue without preemption. This allows embedding an operating system concept into simple systems using only functions and a ready queue. Interrupts can add jobs to the queue. The scheduler and example oscilloscope application demonstrate scheduling without process state using only callbacks.
Node.js is a server-side JavaScript platform for building scalable network applications. It allows writing code using JavaScript for non-browser environments like servers. Node.js uses an event-driven, asynchronous I/O model that makes it lightweight and efficient. A simple web server can be written in just a few lines of Node.js code. Node.js has a thriving ecosystem of external modules that help build full-stack JavaScript applications.
15. Persistence with Session Server
Client
Server #1
Session
Server
Server #M
Load Balancer
Login
Process
Session
Session
16. Random
Round Robin
…
Global Server Load Balance (GSLB)
Client
Server #1
Server #2
10.0.1.1
10.0.2.1
192.168.3.5
DNS Server
00xx.d-t.com A 10.0.1.1 30
00xx.d-t.com A 10.0.1.2 30
DNS
Acess
Short TTL
17. Random
Round Robin
Geoloaction
…
GSLB Not Persistence & Store Sessions Locally
Client
Server #1
Server #2
10.0.1.1
10.0.2.1
192.168.3.5
DNS Server
00xx.d-t.com A 10.0.1.1 30
00xx.d-t.com A 10.0.1.2 30
DNS
Login
Process
Short TTL
18. sh-5.1$ ping tw.yahoo.com -c 1
PING fp-ycpi.g03.yahoodns.net (180.222.109.252) 56(84) bytes of data.
^C
--- fp-ycpi.g03.yahoodns.net ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
sh-5.1$ ping tw.yahoo.com -c 1
PING fp-ycpi.g03.yahoodns.net (180.222.106.12) 56(84) bytes of data.
64 bytes from e2.ycpi.vip.tpb.yahoo.com (180.222.106.12): icmp_seq=1 ttl=51
time=12.2 ms
--- fp-ycpi.g03.yahoodns.net ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 12.197/12.197/12.197/0.000 ms
19. GSLB with Local DNS (LDNS) to Get Persistence
Client
Server #1
Server #2
10.0.1.1
10.0.2.1
192.168.3.5
DNS Server
d-t.com NS ldns1.d-t.com
d-t.com NS ldns2.d-t.com
ldns1.d-t.com A 10.0.1.253
ldns2.d-t.com A 10.0.2.253
00xx.d-t.com cname alias.d-t.com
LDNS#1 10.0.1.253
alias.d-t.com A 10.0.1.1 30
LDNS#2 10.0.2.253
alias.d-t.com A 10.0.2.1 30
Sync Status & Load Balance
Server #1 10.0.1.1 wins
DNS#2 gets
10.0.1.1
DNS#1 gets
alias.d-t.com
20. GSLB with Local DNS (LDNS) to Get Persistence
Client
Server #1
Server #2
10.0.1.1
10.0.2.1
192.168.3.5
DNS Server
d-t.com NS ldns1.d-t.com
d-t.com NS ldns2.d-t.com
ldns1.d-t.com A 10.0.1.253
ldns2.d-t.com A 10.0.2.253
00xx.d-t.com cname alias.d-t.com
LDNS#1 10.0.1.253
alias.d-t.com A 10.0.1.1 30
LDNS#2 10.0.2.253
alias.d-t.com A 10.0.2.1 30
Sync Status & Load Balance
Server #1 10.0.1.1 wins
Login
Process