ARM learning plan

Publisher:Ziran520Latest update time:2012-09-25 Source: 21ic Keywords:ARM Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

ARM+LINUX route, focusing on embedded Linux operating system and its application software development goals:

(1) Master the structure and principle of mainstream embedded microprocessors (preliminarily defined as arm9)

(2) Must master an embedded operating system (preliminarily uclinux or linux, version to be determined)

(3) Must be familiar with the embedded software development process and have completed at least one embedded software project.

The benefits of engaging in embedded software development are:

(1) Currently, there is a shortage of people in this field both at home and abroad. The entry threshold of this field is high, so it is difficult for non-professional IT personnel to enter this field; on the other hand, because this field is relatively new and is currently developing too fast, most people have no conditions to get in touch with it.

(2) Unlike application software such as enterprise computing, the work intensity of talents in the embedded field is usually lower (but the income is not low).

(3) If you want to start your own business and develop your own products, embedded systems are not as easy to be pirated as application software. Hardware design is usually customized by other companies (this is called "OEM"), and they are all general hardware. We only need to design the software and it will become our own product.

(4) Interest is the most important thing.

The disadvantages of working in embedded software development are:

(1) The entry entry level is relatively high, and the technologies used are often difficult. If you do not have a good foundation in hardware and software, especially if you do not have a deep foundation in operating system-level software, you may not be suitable for this line of work.

(2) The number of companies in this area is far smaller than that of companies in enterprise computing.

(3) A few companies often require people with a master's degree or above to work on embedded systems, mainly due to the difficulty of embedded systems. However, most companies do not have this requirement, as long as they have experience.

(4) The platform is highly dependent and it is difficult to change platforms.

Origin of interest:

1. The concept of success is different. Not wasting my life is my success.

2. Like to think and challenge logical thinking.

3. Like C

C is a language that pushes the limits of thinking. Some aspects of the spirit of C can be summarized in short sentences as follows:

Trust the programmer.

Don't stop programmers from doing what needs to be done.

Keep your language short and to the point.

A method does an operation.

Makes it run fast enough, although it's not guaranteed to be portable.

4. I like low-level development and hate VB-type development tools (not to say VB is bad).

5. The development prospects are good and suitable for starting a business. I don’t want to be an engineer when I am about to die.

Method steps:

1. Basic knowledge:

Purpose: To be able to understand how hardware works, but with a focus on embedded software, especially operating system-level software, which will be my advantage.

Subjects: Digital circuits, computer organization principles, embedded microprocessor structure.

Assembly language, C/C++, compilation principles, discrete mathematics.

Data structures and algorithms, operating systems, software engineering, networks, databases.

Method: Although there are many subjects, they are all relatively simple basics, and most of them have been mastered. It is not necessary to learn all of them, and you can choose electives according to your needs.

Main books: the C++ programming language (never had time to read), Data Structures - C2. [page]

2. Learn Linux:

Purpose: To gain an in-depth understanding of the Linux system.

Method: Use Linux—〉LINXU system programming development—〉Driver development and analysis of Linux kernel. Read the in-depth version first, then the main principle. After reading it several times, read the scenario analysis, and compare it with the in-depth version. The two books are cross-cutting, the in-depth version is the outline, and the scenario is the main point. The analysis version is 0.11, which is suitable for learning. Finally, go deep into the code.

Main books: Complete analysis of the Linux kernel, advanced programming in the Unix environment, in-depth understanding of the Linux kernel, scenario analysis and source code.

3. Learn embedded Linux:

Purpose: To master embedded processors and systems.

method:

(1) Embedded microprocessor structure and application: Just learn the ARM principle and assembly, do not repeat x86.

(2) Embedded operating system: ucOS/II is simple, open source, and can be used for getting started. Then study uClinux in depth.

(3) You must have a development board (arm9 or above) and can participate in training if possible (you will make rapid progress and make some friends).

Main books: Mao Decao's "Embedded Systems" and other arm9 manuals and arm assembly instructions, etc.

4. In-depth learning:

A. Digital image compression technology: mainly you should master MPEG, MP3 and other encoding and decoding algorithms and technologies.

B. Communication protocols and programming techniques: TCP/IP protocol, 802.11, Bluetooth, GPRS, GSM, CDMA, etc.

C. Network and information security technology: such as encryption technology, digital certificate CA, etc.

D. DSP technology: Digital Signal Process, DSP processor implements digital signal processing algorithms through hardware.

Note: Too many details are not explained, which can be adjusted according to the actual situation. The key points are 1 and 3, which do not have to be done in exact order. For learning C++, the reason is that C++ is not only a language, a tool, but also an art, a culture, a philosophy, but not something to show off. For the Linux kernel, it is also necessary to learn programming and read some excellent codes.

Note: You must learn to draw inferences from one example and have a strong foundation. You can learn many things simply by looking at them. If you want to be a qualified programmer, you must be proficient in at least one programming language and have good logical thinking. You must combine theory with practice.

Don't just study technology. Although it is difficult to squeeze out time, you should still leave some room to improve other hobbies, such as space, sketching, machinery, management, psychology, games, science fiction movies. There are also some things that you don't want to do but must do!

Technology is created through programming and programming. Never dream of reaching the sky in one step, don't be impetuous, and don't think the road is long. Instead, you should program, program, and program, and then program again and again! Wait for the opportunity to start a business (don't believe in miracles, it is difficult to succeed in blindly starting a business, and even if you succeed, the development space may not be very large).

Embedded Book Recommendations

Linux Basics

1. Linux and Unix Shell Programming Guide

C language basics

1. C Primer Plus, 5th Edition by Stephen Prata

2. "The C Programming Language, 2nd Edition" [US] by Brian W. Kernighan David M. Rithie (K & R)

3. "Advanced Programming in the UNIX Environment, 2nd Edition" (APUE)

4. "Detailed Explanation of Embedded Linux Application Development"

Linux Kernel

1. "In-depth Understanding of the Linux Kernel" (3rd Edition)

2. "Linux Kernel Source Code Scenario Analysis" by Mao Decao and Hu Ximing

R&D Direction

1. "UNIX Network Programming" (UNP)

2. TCP/IP Detailed Explanation

3. Linux Kernel Programming

4. Linux Device Driver Development (LDD)

Hardware Basics

1. ARM Architecture and Programming by Du Chunlei

2. S3C2410 Datasheet

English Basics

1. "Computer and Communication English"

System Tutorial

1. "Embedded Systems - Architecture, Programming and Design"

2. "Embedded Systems - Using Open Source Code and StrongARM/Xscale Processors" by Mao Decao and Hu Ximing

3. "Building Embedded Linux Systems"

Theoretical basis

1. Introduction to Algorithms

2. Data Structure (C Language Edition)

Keywords:ARM Reference address:ARM learning plan

Previous article:Design of High Dynamic GPS Receiver Using AT91R40008
Next article:Improving the reset circuit of microprocessor by using single trigger delay

Recommended ReadingLatest update time:2024-11-16 15:26

Wireless data transmission and reception based on nRF905 and LPC2148 ARM development board
The designed wireless data transceiver system is an important part of the wireless follow-up control system. It is mainly composed of nRF905 wireless transceiver module and LPC2148 ARM development board. It is used to realize wireless data transmission between the manual system and the follow-up syste
[Analog Electronics]
Wireless data transmission and reception based on nRF905 and LPC2148 ARM development board
ARM assembly instruction learning (1) Implementing data block copy
Program Requirements: Design a program to complete the data block. The data goes from the source data area snum to the target data area dnum. The data size is NUM words (1 word = 4 bytes). It is performed in units of 8 words. For the data with less than 8 words left at the end, it is performed in units of words.  
[Microcontroller]
ARM assembly instruction learning (1) Implementing data block copy
Installation of arm-linux-gcc
If a program developed on an X86 computer is to run on an ARM system, you must use the cross tool chain arm-linux-gcc. This tool chain is not available on the Linux system, so you must download and install it yourself. The installation steps are:   1. Download a compressed package arm-linux-gcc from the Internet. Th
[Microcontroller]
Touch screen driver solution based on Linux system
introduction As an input device, the touch screen has the advantages of being durable, fast in response, space-saving, and easy to communicate. It provides a simple, convenient, and natural way of human-computer interaction and is currently widely used in industrial control, electronic inquiry, and consumer ele
[Power Management]
Touch screen driver solution based on Linux system
ARM7 Getting Started 3, A/D Conversion
Main program: /******************************************************************************/ /*  This file is part of the uVision/ARM development tools                    */ /*  Copyright KEIL ELEKTRONIK GmbH 2002-2004                                  */ /*****************************************************
[Microcontroller]
ARM7 Getting Started 3, A/D Conversion
Haixing Power expands into emerging markets with Arm Pelion IoT platform
Arm announced that Hangzhou Haixing Electric Power Technology Co., Ltd. (hereinafter referred to as "Haixing Electric Power") has become the latest strategic partner of Arm IoT. Arm provides basic technology to Haixing Electric Power through the Pelion IoT platform, helping it to build a full-stack IoT solution for it
[Internet of Things]
Ubuntu12.10 uses JLink to connect the development board and uses arm-gdb to debug ARM programs
Part 1 Environment setup and tool installation 1.1 Setting up the cross-compilation environment Install related compilation tools: sudo apt-get install  build-essential gcc-arm-linux-gnueabi Here I use the gcc-arm-linux-gnueabi series of tools contained in the Ubuntu system source. After installation, the following
[Microcontroller]
Design of multi-tag multi-protocol RFID reader based on ARM
Introduction With the development of modern information technology and ultra-large-scale integrated circuits, RFID technology has been increasingly widely used in the service field, goods sales and logistics distribution, commercial departments, production enterprises and material circulation. The basic principle of
[Microcontroller]
Design of multi-tag multi-protocol RFID reader based on ARM
Latest Microcontroller Articles
  • Download from the Internet--ARM Getting Started Notes
    A brief introduction: From today on, the ARM notebook of the rookie is open, and it can be regarded as a place to store these notes. Why publish it? Maybe you are interested in it. In fact, the reason for these notes is ...
  • Learn ARM development(22)
    Turning off and on interrupts Interrupts are an efficient dialogue mechanism, but sometimes you don't want to interrupt the program while it is running. For example, when you are printing something, the program suddenly interrupts and another ...
  • Learn ARM development(21)
    First, declare the task pointer, because it will be used later. Task pointer volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • Learn ARM development(20)
    With the previous Tick interrupt, the basic task switching conditions are ready. However, this "easterly" is also difficult to understand. Only through continuous practice can we understand it. ...
  • Learn ARM development(19)
    After many days of hard work, I finally got the interrupt working. But in order to allow RTOS to use timer interrupts, what kind of interrupts can be implemented in S3C44B0? There are two methods in S3C44B0. ...
  • Learn ARM development(14)
  • Learn ARM development(15)
  • Learn ARM development(16)
  • Learn ARM development(17)
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号