리눅스 쉘 스크립트 마스터
홍영기
리눅스 쉘 스크립트를 공부할까 말까 망설이는 당신에게 한 가지만 말하겠습니다. 해커처럼 멋있게 리눅스를 다루고 싶은가요? 쉘 스크립트를 모르는 해커를 상상할 수 있나요? 그럼 지금 바로 시작하세요!
Basic
Linux, Shell Script
Want to learn the CORTEX-M processor in a systematic way? We will clearly explain the two most important topics in embedded systems: assembler and interrupts.
Is it okay to use unordered access?
The Importance of Assembly Language
How the pipeline works
Inline Assembler
Link script
How NVIC Devices Work
Complete analysis of exception handling process from start to finish
Clock controller
Boot code analysis
ARM Cortex-M Processor in One Lecture
Check out everything from concepts to practical know-how.
The most popular 32-bit microprocessor for embedded systems.
Representative processors include CORTEX-M3, CORTEX-M4, CORTEX-M0, and CORTEX-M33.
It is applied to products in various fields because it has low power consumption and is price competitive.
CORTEX-M processor is the most popular and noteworthy 32-bit microprocessor used in embedded systems in various fields including drones, smart factories, autonomous vehicles, aerospace, medical diagnostic devices, home appliances, Internet of Things, and environmental energy.
The CORTEX-M processor is suitable for applications that prioritize price and power efficiency over performance. It is a processor with a low gate count, low interrupt latency, and debug capabilities .
Supports THUMB2 instructions as the basic instruction set.
The NVIC is tightly integrated with the processor core, providing low-latency interrupt handling .
Supports ' tail chaining ' and ' LATE ARRIVING ' interrupts to improve interrupt response time.
Supports bit -bands, including bit- band write and read operations to support atomic access.
I don't think there has ever been a time in the past few decades when developers were valued as much as they are now. When you ask young people what they want to be when they grow up, you might hear the answer "doctor" or "prosecutor" along with the word " developer ."
As developers become more valuable and their salaries rise, computer science and electronic engineering are ranked high in the popularity rankings of universities. Just like the movie title “As Good as It Gets,” it reminds me of people who set out for El Dorado in search of gold in the 19th century American West. It could be called the golden age of developers.
This comment that leaked out from inside a domestic company M in 2016 was even on the news and was talked about for a while. And even if this had not happened, it is a word that everyone would have heard at least once in their lives. But a developer with problem-solving skills? Why did this become an issue?
What I understand this sentence to mean is, in simple terms, this. Let me give you an example. This code is definitely mine. There is definitely a bug in this program. I know it. But I can't fix it. It can take hours, days, months.
If you ask me if something like this could really happen, I would say that of course this situation is possible. That's why it became an issue.
Coding is something that anyone can do with a little bit of knowledge, but problem solving is a whole other level of problem.
It is difficult to create software that works on embedded systems, but it is even more difficult to solve rare and tricky problems. This is because, depending on the case, narrowing the scope of the problem down to software alone may not solve the problem. It is necessary to consider that the components of embedded systems are 'hardware + software'.
Even now, many new types of silicon are released every year. Also, many more types of hardware are made that use these chips. Can we believe that all of this is hardware-wise perfect?
When troubleshooting, the possibility of a hardware bug should also be considered. If a problem is not easily solved, software developers should be able to consider whether it is a hardware problem or a software problem.
But this is something that should be trained regularly. It is difficult to convince anyone by claiming, “This is a hardware problem” or “This is a software problem” without any basis.
I have met quite a few software developers who, whether voluntarily or not, have little knowledge of hardware, or even no interest at all. That is why developers with problem-solving skills are all the more valuable and important in this field.
The conclusion is already out there. You have to try to understand the hardware.
Understanding hardware doesn't necessarily mean soldering electronic components onto a printed circuit board. It doesn't mean mastering LEDs or push-button keys.
Rather, you should study assembler and understand the basic principles of how embedded systems work . The two key words that I believe and understand in solving embedded software are assembler and interrupt .
Assembler is for understanding hardware, and interrupts are a software mechanism that runs asynchronously, so they are likely to harm the stability of the system. Therefore, you should learn them well to create reliable software.
There are various views on assembly language among developers. First, read the post on the bulletin board of a famous domestic developer community.
Modern compilers are much smarter than they used to be. They are good at producing optimized code. The days of coding in assembly language to improve system performance are a thing of the past. So why do I emphasize assembly language so much?
The reason we learn assembler is to better understand how embedded systems work. Assembler helps developers see into the inner workings of embedded systems .
Just as the saying goes, “Don’t look at the trees, look at the forest,” no matter what you study, you should constantly try to understand the structure (system) of the subject you are studying. We need to think again that embedded systems are “hardware + software.”
If you have been developing for more than two years and have not seen any significant improvement in your embedded system development skills, it is time to fundamentally change your learning method.
There is a saying that goes, 'If you invest 10,000 hours in any field, you will become an expert in that field.' I agree with that, but I would like to change this sentence a little bit. It would be, ' If you invest 10,000 hours in any field in an effective way, you will become an expert in that field .'
In addition to the advantages mentioned above, learning assembler has several additional benefits.
First , any software unconditionally includes 1-5% of assembly code (you will know why if you study assembler). If you understand the embedded assembly code, you will be able to have 100% complete control over the software.
Second , it creates a foundation for understanding boot code (not the bootloader) written in assembler and being able to code it yourself.
Third , the spectrum of debugging (troubleshooting) tool usage capabilities broadens and deepens.
Fourth , we can improve the quality of software to improve system performance and utilize memory efficiently.
Fifth , making software that runs on one hardware run on another hardware is called porting, and in this case, the ability to use assembler is essential.
Sixth , you can easily understand pointers in the C language. (The concept of address is essential when controlling memory or I/O devices in assembly language.)
This course (ARM Cortex-M Processor Programming) covers both of these (assembler, interrupts) for sure.
If you think you are not interested in assembly language, please ignore this course and filter it out. I only want to go with people who truly understand its value.
In offline ARM processor training, I have always emphasized this content to students as a personal belief. Through this course, I would like to provide a perspective to look at embedded systems from a different perspective.
All of the above are the core topics of this lecture. Now, let's get into the details.
Unlike previous ARM processors that did not allow unaligned access, CORTEX-M processors allow unaligned access by default. Let’s consider the pros and cons of using unaligned access.
When developing embedded software, it is easy to assume that there are no hardware problems, and anyone can fall into unexpected traps at any time when developing software. In order to find and solve such problems, a certain level of understanding of hardware is required. Each individual hardware device, including memory, has its own unique operating characteristics, and this is what we mean by understanding them. The first easy thing to do to increase your understanding of hardware is to learn assembly language. I would like to say again that indirectly experiencing hardware through assembly language is the starting point for software engineers to understand hardware.
Pipelined processors are more efficient than non-pipelined processors. It is hard to imagine an ARM processor that does not use pipeline technology. Let's study the pipeline operation principle of the CORTEX-M processor and its implications.
What is inline assembly? Simply put, it means writing assembly code in the form of a C function. The external form of inline assembly looks like a C language function, but the actual content is an assembly instruction. Assembly instructions are also closely linked with local variables in the C function. In the case of MSR and MRS instructions that cannot be replaced with C language, if they are implemented and used inline assembler, the value of inline assembler shines.
The STM32CubeIDE compiler automatically generates many sources and creates various files, including makefiles, required for compilation through an automated process. A file called a linker script is also one of the automatically generated files, and the linker always refers to this file to create the final executable file desired by the user. Let's learn about the role of the linker and the linker script syntax.
Unlike ARM7, ARM9, and ARM11 processors, CORTEX-M processors are designed to have a closer connection by incorporating the NVIC, an interrupt controller device, inside the CORTEX-M processor. Understanding the operating principle of NVIC is also the starting point for understanding interrupts, which play an important role in embedded systems.
The process until the exception handler is executed when an exception, including a hardware interrupt, occurs. It describes the entire process from the execution of the exception handler code to the restoration of the program code just before the exception occurred.
Learn the operating principles of the clock system, which supplies clocks to various hardware devices interfaced with AHB and APB, including the CORTEX-M core, inside the STM32 CORTEX processor, and strengthen your confidence in clock control by directly changing the system clock frequency through hands-on training.
CORTEX-M processors support the so-called 'tail chaining' technology to improve the efficiency of exception processing speed. We will learn the operating principle and practice how much this technology contributes to improving interrupt responsiveness. We will also look at interrupt nesting.
Trying to understand the boot code of a software can also be a great help in understanding the overall structure of embedded system software. Rather than simply using the boot code, by interpreting the meaning contained in the boot code, we can derive a more advanced direction for software. Of course, this also has the importance of essential prior knowledge for tasks such as porting bootloaders or RTOS.
I created this course with your time as precious as my own.
Based on my experience in conducting ARM processor field lectures for 14 years with over 1,000 students, I have created this online lecture to meet more students. I will meet you as an online lecture that optimizes the content of 5 days of field lectures to 15 hours .
Embedded Systems
Beginner
Already CORTEX-M
I'm using it though
Systematic organization
Anyone in need
In embedded software
To increase understanding of Korea
Hardware Developer
Successful RTOS porting and
For operation
Microcomputer knowledge
Anyone in need
📢 Check your player knowledge!
Main history
etc
Q. Can someone who doesn't know the C language take this course?
If you do not know the C language, you may have difficulty understanding the practical parts of the class.
Q. Can intermediate level students also take this course?
This course is designed to cover not only those who are new to embedded system development, but also intermediate users who are already using CORTEX-M. With 14 years of experience teaching ARM processors at Samsung Electronics, SK Hynix, Hancom Academy, Korea Radio Promotion Agency, KEA, Motorola Semiconductor, and Polytech (Incheon), I have been able to cover the particularly difficult parts and important topics of ARM processor embedded programming in depth.
Q. There are various types of STM32 boards for practice. Is any of them okay?
In the video, the class is currently conducted based on the STM32F429I-DISC1 board.
Additionally, NUCLEO-F103RB , NUCLEO-F401RE boards are also supported. There are no plans to support additional boards. For those who are purchasing a new board for this training, we strongly recommend the STM32F429I-DISC1 board.
📢 Please check before taking the class! (License)
Who is this course right for?
Introduction to Embedded Systems
If you are considering optimizing an embedded system
Those who are already using CORTEX-M but need a systematic organization
Hardware developers who want to improve their understanding of embedded software
Those who need microcontroller knowledge for successful RTOS porting and operation
Anyone who wants to learn ARM assembly language
Those who need to learn inline assembly, linker scripts, and boot code
Those who need professional debugging techniques for embedded system software
Need to know before starting?
C language
3,209
Learners
218
Reviews
262
Answers
4.7
Rating
5
Courses
인하대학교 공과대학에서 전자공학 학사 학위를 받았으며 임베디드 시스템용 소프트웨어 개발자로써 수년간의 경력을 쌓았습니다. 임베디드 시스템 및 프로그래밍을 위한 전문 강사로도 활동 중입니다. 아이폰 3GS 등장과 같은 시기에 맥(북)에 입문하였고, 그때부터 맥(북) 자동화에 관심을 갖게 되었습니다. '맥(북)에서 사용할 수 있는 시리 리모트', '키보드마에스트로를 이용한 구글번역기' 같은 오픈 소스를 깃허브(https://github.com/guileschool) 에 두고 개발 및 유지보수하고 있습니다. 오픈 소스 하드웨어 '비글본블랙' 에도 많은 관심을 가지고 있습니다. 맥(북) 자동화를 이용하여 생산성을 높일 수 있는 컴퓨터를 사용하는 모든 분야에 관심을 가지고 있고, 이를 필요로 하는 사람들을 돕고 있습니다.
강의 요청 및 기타 문의사항은 guileschool@gmail.com으로 보내주세요 :)
All
111 lectures ∙ (15hr 10min)
Course Materials:
All
37 reviews
4.9
37 reviews
Reviews 4
∙
Average Rating 5.0
5
※ 1줄 요약: 아무 걱정 마시고 그냥 무조건 들으세요. 수강료가 100만 원이 돼도 무조건 들어야 합니다. <임베디드스케치>, <임베디드레시피> 책을 읽은 뒤 ARM 내용을 정리 & 실습하기 위한 목적으로 홍영기 선생님의 강의를 결제 후 완강까지 7일 소요됐습니다. ◆ 장점 - 너무 잘 설명해주셔서 이해하기 쉽습니다. - 말과 말 사이 간격 편집, 기다리는 과정 편집, 보드 영상 편집 등으로 수강하기 너무 편합니다. - 특히 마지막 챕터 링커스크립트와 부트로더 한 줄 한 줄 설명해주시는 게 가장 좋았습니다. ◆ 팁 - 질문에 정말 친절하게 답해주시고, 추가로 읽으면 좋은 자료도 소개해주십니다. 한 강의 수강하실 때마다 질문게시판 확인하세요. - PM0214, RM0090 두 datasheet 열어놓고 강의 들으시면 좋습니다.
완강하셨네요 ^^. 영상을 끝까지 봐주셔서 감사드리고, 수고하셨습니다. 부족한 점도 많을텐데 강의에 대한 좋은 평가도 감사드립니다. 적어주신 자세한 수강평 내용은 앞으로 이 강의 수강을 검토하시는 많은 분들에게 좋은 참고가 될 것입니다. 임베디드 쥰님 새해 복 많이 받으시고 꼭 소원 성취하세요 :-)
Reviews 2
∙
Average Rating 5.0
Reviews 1
∙
Average Rating 5.0
Reviews 3
∙
Average Rating 5.0
5
"임베디드의 인프라 기술, ARM 동작원리를 쉽게 알고 싶은 분들에게 추천하고 싶은 강의입니다. 컴파일 에러가 뜨면 심리적으로 위축되고, 그게 C 문법이 아닌 처음 보는 이상한 명령들이라면 더욱 더 스트레스를 받습니다. 이 강의를 수강하면서 그런 에러들을 좀 더 여유있게 처리할 수 있게 되었습니다. 핵심 내용을 짧게 나눠서 실습과 함께 설명해 주시기 때문에 이해하기 쉽습니다. 실무에서 ARM 명령어를 직접 다루지 않더라도 강의에서 배운 프로세서의 기반기술을 알고 있기 때문에 문제 해결을 좀 더 다양한 관점에서 접근할 수 있을것 같습니다. 강의를 만들어 주셔서 감사합니다^^
안녕하세요. Taewan Sung 님! 이 강의가 도움이 되셨다니 제가 더 감사한 일입니다. 앞으로도 더욱 유익하고 다양한 강의 제작에 힘쓰겠습니다. 강의에 대한 좋은 평가 감사드려요 :-)
Reviews 1
∙
Average Rating 4.0
$118.80
Check out other courses by the instructor!
Explore other courses in the same field!