Although the embedded threshold is relatively high, it is just like other things. It is not unbreakable. As long as we treat it with all our heart, winter snow will eventually come and the spring breeze will blow. Specific steps are as follows:
1, "C language" second edition Tan Haoqiang; "C program design language" second edition Xu Baowen translation machinery industry press
Can you distinguish between pointer arrays and array pointers? Do you know the function pointer?
Can you distinguish between the space allocated by the system when you define a variable and the space allocated to it by the malloc() function?
2, "data structure" C language version Huang Guoyu, Ye Naiqing compiled Tsinghua University Press
Can you close the book and use the C language to implement the single-linked and double-linked list data structures in the book?
3, "Practical C + + programming" second board China Electric Power Press Steve_Oualline
This phase is mainly to learn its object-oriented programming ideas and deepen the understanding of C language and data structure.
4, learning SCM, it is best to find a predecessor with a band.
Can you use 51 single-chip microcomputer to make practical things? Even if it is simpler!
Pay attention to deeper understanding of interrupts.
5, learning ARM microcontroller.
(1) Carefully read the "Basics and Actualities of ARM Microcontrollers" written by Zhou Ligong (Note: Even if you do not use the development board in the book)
(2) Read the original English document of the relevant chip. Such as: arm920TE.pdf S3C2410_1.2.pdf
6, learn uCOS! ! operating system.
(1) Read the embedded real-time operating system uC/OS-! ! The Second Edition called Beibei Translation
Can you put uCOS! ! Porting to your own platform?
(2), can write in uCOS! ! Specific hardware-based drivers that run in operating system environments
7, familiar with the Linux environment, learning Linux environment programming, learning cross programming
(1), peruse "linux command encyclopedia.pdf"
(2), peruse "GNU Make Manual (Chinese translation).pdf"
(3) Learn to create a cross programming environment.
8, learn Linux operating system.
(1), "Advanced Programming of UNIX Environment"
(2), peruse "joyfire notes", available in the "good book download" section of the "" website
(3), peruse "linux kernel full comment"
(4), perusing "understanding the linux kernel 2"
(5), use the source code to read the tool "Source Insight" for real linux kernel source code parsing
(6) Finally, a kernel migration is performed, and a specific hardware-based driver running under the Linux operating system environment can be written.
9, learn Linux device driver preparation. See "Linux Device Drivers"
10, review C++, learn to use QT for graphical interface programming
(1), peruse "QT Programming Collection"
(2) Learn to do QT GUI field programming by viewing QT electronic documents
(3), learning cross programming. (In fact, the command qmake becomes tmake)
11, of course, you can also learn about PCB production and design a own CPU (ie soft shell)
The most important courses in embedded software include:(1) Embedded microprocessor structure and application:
This is an embedded hardware basic course. We said that embedded technology is a combination of software and hardware. People who engage in embedded software should fully understand the working principles and interface technologies of ARM processors, including ARM's assembly instruction system. If you do not understand the principle of the processor, how can you control the hardware work, how can you write the best code to save memory and run high-speed (embedded software design with special emphasis on space-time efficiency), how can write out the driver (driver and hardware are Dealing with?)? Many companies need to be familiar with ARM processors when hiring embedded software personnel. In the future, if students are engaged in embedded software development in the company, the company will give you a hardware specification (xxx SpecificaTIon) of the device. You must be able to read them. The basic description of memory distribution and port usage (like x86 assembly), otherwise how to design software. Some students think that embedded processor courses are relatively boring. This is mainly because the hardware courses are relatively abstract. There are also students who are not interested in the ARM compilation and think that the C language for embedded development is sufficient. In fact, it should not be only the assembly language as a programming language. The main purpose of the compilation is to master the working principle of the processor. How can someone who is not familiar with assembly language write the optimal C code on this processor? In some key parts of embedded development, it is sometimes necessary to write assembly, such as Bootloader (possibly including BSP). Especially in applications where there are extremely high requirements for speed (such as high-speed image acquisition and image decompression of DSP processors), assembly and writing programs are currently used, although the chance of using them is much smaller than that of C. When you work in an embedded company, when you look at the manual that describes the principles, many of them may be described in assembly. This is because many hardware designers only write or like to use assembly descriptions. At this time, you must read and understand. Assembler, otherwise hardware and software personnel may not be able to communicate. Many embedded jobs require familiarity with assembly.
[Little Knowledge] Currently common embedded processors ARM, PowerPC, MIPS, Motorola 68K, ColdFire (cold fire), etc., but ARM dominated the mainstream (data say almost 90% of mobile phones are ARM processors). ARM is a company that only sells intellectual property rights. At present, many large companies have purchased ARM CPU core licenses, including Intel, Samsung, Amstel, Motorola, Philip, etc. They have carried out some peripheral expansions based on ARM CPU cores. The formation of their own processors (such as Samsung S3C2410, Motorola i.MXL9328 and other processors are based on the ARM 9 core, instructions are the same). Many small and medium-sized companies have purchased these processors and designed a variety of development boards. For example, many well-known embedded companies such as Huaheng have produced Samsung S3C2410-based development boards for use by end-users or for teaching experiments. In the ARM food chain, ARM company is a big fish, Intel, Samsung and other companies are small fish, Huaheng, etc. are shrimp, end users (we want to buy embedded development board) is fed shrimp. Intel's early production of low-end ARM (StrongARM, equivalent to ARM 7), is now turning to the main production of high-end ARM (Intel Xscale processor, belonging to the ARMv5 family, mainly used in high-end PDA, such as HP and DELL production PDA are used Intel Xscale, higher prices). At present, the most widely used are ARM 7 and ARM 9 processors. ARM 7 is cheaper, you can run uclinux (an embedded Linux system that does not support advanced memory management functions), Vxworks, uc/os II and other real-time operating systems, but because the processor does not have a memory management unit MMU (no memory paging And address mapping mechanism, so you can not use virtual memory), so you can not run WindowsCE, and some memory management functions in general Linux can not be used on ARM7. ARM 9 is mostly a high-end processor with MMU functionality that can run most of the functionality of WinCE or Universal Linux. The difference between ARM7 and ARM9 is architecture and architecture. The former is the von Neumann architecture, and the latter is the Harvard architecture. The instruction and data buses are separate. The above is my understanding. It may be wrong. There are more than ten sets of ARM 7 development system in our college (using SamsungS3C44b0x development board, mainly used for embedded processor architecture, real-time operating system and other course experiments), ARM 9 system seems to have arrived (I don't know the chip used Did not ask), there are more than a dozen sets of MPC860 development board (I heard the price is very expensive, it is easy to damage), students should love to use and cherish such experimental opportunities.
(2) Embedded Operating System Courses
In addition to the slightly worse real-time performance of WinCE, most real-time embedded operating systems are very strong, so it can also be called real-time operating system Real TIme OperaTIngSystem. People engaged in embedded must master at least one embedded operating system. All of the embedded technologies are the most critical. The most important RTOS currently includes:
The first, classic, classic RTOS: The main one is the Vxworks operating system and its Tornado development platform. Vxworks is earlier and has a very real-time nature (it is said that it can respond to external event requests within 1ms), and the kernel can be extremely small (it is said that the minimum can be 8K), and the reliability is high. Therefore, in North America, Vxworks occupies the embedded system. Mostly Xinjiang. Especially in systems with high real-time requirements such as communication equipment, it is almost non-Vxworks. Many of Vxworks' concepts and technologies are similar to those of Linux, mainly C language development. When communication companies like Bell-Alcatel, Lucent, and Huawei develop products, Vxworks is used a lot. However, because of the high price, Vxworks is often not used in small companies or small products. At present, many companies are moving to embedded Linux (heard that Huawei is currently doing so). However, Vxworks is still unshakable for a long time. Some of the lesser-known real-time operating systems similar to Vxworks are RTOSs such as pSOS, QNX, Nucleus, and others.
The second category, embedded Linux operating system: the future of Linux In addition to being the server operating system, the most successful is the application in the embedded field, of course, is free, open source, support software, callers, such embedded The product cost will be low. Linux itself is not an operating system for embedded design, not a microkernel, and its real-time performance is not strong.
There are two main types of Linux systems currently used in the embedded field:One is a Linux system that has been tailored for embedded design. The most commonly used is uClinux (without MMU function). It currently occupies a large share of applications and can run on ARM7; the other is running on ARM9. The Linux 2.4.18 kernel is generally ported to it, and more Linux functions can be used (of course uClinux can run on ARM 9). Many people predict that embedded Linux is expected to account for more than 50% of the embedded operating system, which is very important. The disadvantage is that too few people are familiar with Linux, and development is slightly more difficult. In addition, at present, we can find that many textbooks and many universities use ucOS/II as a real-time operating system for teaching. This is mainly because ucOS/II is relatively simple and open source, which is very suitable for beginners to learn the principles of real-time operating systems, but due to ucOS/ II is limited in function and less useful. Moreover, we are familiar with Linux development, not only useful in the embedded field, but also helpful in developing Linux application software and deepening the understanding of the operating system. As far as I know, Intel and Philip are currently engaged in the embedded development of ARM+LINUX. Fujitum is engaged in Linux development on its own processor. At present, in the embedded Linux field, people in the following areas are particularly hard to find. One is the ability to port Linux to a new model development version; the second is to write Linux drivers; the third is to familiarize with the Linux kernel reduction and Optimized people. However, there is a flaw in LINUX, that is, there is no friendly and convenient interface of WINDOWS , or the Microsoft Empire has long been unable to hold on.
The third category, Windows CE embedded operating system: Microsoft also spotted the huge embedded market, MS is always the most powerful, WinCE came out only a few years, but now has occupied a large market share, especially in the PDA For the occasions with high requirements for interfaces such as mobile phones and display meters, or where rapid development is required, WinCE is currently very popular (it is said that there is a company board that sells IPCs sold so well that it has no time to cut WinCE for customers). WinCE is currently mainly version 4.2 (.NET), and the development platform is mainly WinCE Platform Builder. Sometimes, some upper-layer applications are also developed in the EVC environment. Since WinCE development is familiar with the VC++ environment, we learned Windows programming in our school. The students of the course will not have much difficulty. This is the reason why WinCE is easily accepted by people. The development environment is convenient and fast. With Microsoft's powerful technical support, WinCE development is much harder than embedded Linux. For eager to complete, do not want to take embedded Linux adventure development, WinCE is the most suitable (to find embedded Linux people can not be so easy to find), after all, the company can not try to learn like students, to ensure the success of development is more important. According to different focuses, WinCE has two special editions. One is that the MSPocketPC operating system is dedicated to PDAs (handheld computers), and the other is the MS SmartPhone operating system used on smart phones (mobile phones with PDA capabilities). Also belong to the WinCE platform. In the PDA and mobile phone markets, in addition to WinCE, the famous PDA embedded operating system also has Palm OS (because it appears very early, well-known), Symbian, etc., but in the strong impact of WinCE, Palm and Symbian to the future how long? The students learned VC++ and then learned WinCE. It is very convenient and natural. By learning WinCE, you can also understand the general development process of embedded software. Students who are afraid of Linux are also very suitable. Obviously, embedded Linux will never be able to replace WinCE, and it will be difficult to say who will occupy a large share in the future. After all, many people are more willing to accept the MS platform. Just as governments have been pushing LINUX for a long time, but you Can you see a few users who actually use Linux on a PC? According to my observation, LINUX is the loudest speaker on the embedded platform. However, WinCE actually uses more. Embedded LINUX may be more of a company with long-term product plans, long-term considerations for cost reduction. WinCE and multimedia (such as MPEG technology) is one of the project areas that Microsoft Asia Engineering University is currently doing, and now society is very People who need to be versed in WinCE. Now there are WINCE smart phones, Kingsoft, WORD, EXCEL, REGEDIT, etc. actually have a smartphone version of the PC, MP3, DOC, etc. actually can be downloaded into the smartphone format, very cool. You can use Windows CE to develop some necessary programs to download to your mobile phone. Nowadays, PDA smartphones are popular in the market, and MS is always a source of money.
Summarize the embedded operating system course, if you feel that you have a deep foundation and can study, you can learn to use embedded Linux; if you think that your own VC++ foundation is better and you want to learn embedded development quickly, self-study WINCE is very good s Choice.(3) Relevant areas of embedded development
Engaging in embedded technology If you are familiar with some of the major areas of embedded applications, such people are more welcome by enterprises. The main related fields include:
A. Digital image compression technology: This is one of the most important and hottest application areas for embedded applications. It is mainly necessary to master MPEG encoding and decoding algorithms and technologies. For example, DVD, MP3, PDA, high-definition television, set-top box, etc. all involve MPEG high-speed decoding. problem.
B, communication protocol and programming technology: This includes the traditional TCP/IP protocol and popular wireless communication protocols. First of all, most embedded devices must be connected to a LAN or the Internet. Therefore, the TCP/IP protocol and its programming should be mastered first. This is the basic technology that must be mastered first. Second, wireless communication is the current trend, so grasp wireless communication. Agreement and programming are also very important. Wireless communication protocols include wireless LAN communication protocols 802.11 series, Bluetooth, and mobile communication (such as GPRS, GSM, CDMA, etc.).
C. Network and information security technologies: such as encryption technology, digital certificates CA, and various network security devices, including hardware firewalls, intrusion detection IDS, and anti-virus walls, IPS, etc. China has no advantage in this regard. We President Chen seems to be developing in this area.
D, DSP technology: DSP is Digital Signal Process digital signal processing meaning, DSP processor realizes digital signal processing algorithm through hardware, such as high-speed data acquisition, compression, decompression, communication and so on. Digital signal processing is a specialized course in electronics, communications, and other hardware. It is best for people who are engaged in software. At present, DSP talent is relatively lacking. If there are course foundations such as signal and system, digital signal processing, etc., it will be very helpful to learn the principles of MPEG encoding and decoding.
(4) The related hardware foundation of embedded development
For software engineering students, engaged in embedded software development, such as digital circuits, computer components, embedded microprocessor structure and other hardware courses are more important. In addition, software foundation courses such as assembly language, C/C++ data structure algorithms, and especially operating systems are also very important. Our main goal is to be able to understand the working principle of the hardware, but the focus should be on embedded software, especially operating system-level software, that will be our advantage. Some of our postgraduate students are majored in electronics and communications. They have better analog circuits and microcontrollers, and learning embedded is very suitable. Embedded itself is developed from the single-chip microcomputer, but the single-chip microcomputer does not have an OS, and now many embedded applications are becoming more and more complicated and have to introduce an embedded operating system. In addition, in order to pursue higher speed signal processing speed, now in some occasions with high speed requirements, many companies use some DSP algorithms, such as MPEG compression and decompression algorithms, to implement them in hardware, which involves HDL digital circuit design. Technology and its FPGA/IP core implementation technologies are also lacking in the market today.
10 Tips for Learning Embedded SystemsNowadays, it seems that the country is conducting a nationwide learning embedded campaign, but it is understood that many people in the entire learning process, due to blanks in certain technical fields or the technology is not yet mature, coupled with personal learning methods are not correct. Personal learning has caused great obstacles. How to solve this situation? According to my limited learning experience, the following 10 suggestions for learning embedded people:
1. Encounter problems, first enter baidu.com, (or other search engine) search, any embedded engineers dare to deny, this is the best teacher to learn embedded!
2. As many forums as possible, encounter problems and post them in a timely manner. When the situation is urgent, you can post in different forums at the same time. In this way, solving your problems in parallel may be solved faster.
3. As much as possible to make embedded experts, preferably embedded engineers working in the company, they have an advantage: understand the market, understand the development of the industry. Mixing with them is very necessary for learners who are not yet on the job.
4. Always enter some good embedded websites, especially some foreign ones, and take a look at embedded developments, and collect these websites. . .
5. If possible, I suggest that you set up an e-journal on the Internet. These e-journals are sent to your e-mail on time. The information is up-to-date. It can be said that it is very avant-garde. . . . . If funds are allowed, it is recommended to register for the embedded training course.
6. Believe in your own choices, believe in the development prospects of your industry, and have a strong interest in your own choices and your own industry. If you can't do this, you will find it difficult to learn a profound level!
7. Pursue to be persistent! Just beginning to learn embedded systems, will certainly encounter a lot of problems, I was also the case, learned more than three months, it seems that there is no progress, I doubt: Do I not suitable for embedded? At that time, I also thought about giving up, but my heart was too reconciled, and I was unable to do so! So hard, constantly pondering. . . . (Now, finally knowing what is embedded linux, haha...)
8. Do not ask yourself too much, as long as you have progressed a little bit more than yesterday, you will be a step closer to success! Learning embedded also avoid bloated (in fact, this point, I feel the most!), which is to be practical.
9. From the top of a flat building, don't overlook the low-level things. The more you learn about high-level technology, the more you discover that low-level things are useful. These people will experience it later! When my freshman learning 51 MCU, it feels useless, sophomore learning ARM processor, only to know that there is no basis for 51, may not know how much time to spend to understand ARM hardware.
10. The problem of system selection. Now that there are many open source operating systems and they are very mature, beginners will also worry about this. The more popular embedded operating systems are: linux, winCE, VxWork, uC/OS2 and so on. . . . The main difference is real-time issues. If you are doing self-control (like the majors I study, but I don't play control...), learning a bit more real-time operating system is more helpful, such as VxWork. If you want to engage in civilian products, such as mobile phones, Set-top boxes, terminal equipment and the like, learning linux, winCE operating systems that are easy to multi-task operation better! It is recommended that you first understand the market share of the system before you study, and you must learn whether you have done anything after learning it. Otherwise, you will only have to use your own system for a lifetime. . .
The sound quality of small speakers is also good. It does not have the same large speakers and power as HIFI speakers, and its sound quality cannot compete with large speakers due to physical limitations. But for the vast majority of users who are not golden ears, the use of small speakers with tablets and mobile phones is sufficient to meet their hearing needs.
For Bluetooth retro speakers, I personally think that when many people buy speakers, the appearance is the first priority and the function is second.
We focus on retro Bluetooth speakers,It has high energy density, mini size, light weight and diversified shapes;Excellent fast charging performance, support fast charging and other excellent features
with a brand-new design, showing retro nostalgia without losing fashion. It uses a 2.5-inch speaker and has many functions such as FM radio, Bluetooth fast connection, multi-mode switching, and HIFI high fidelity. Wireless Bluetooth 4-10 hours of playback (at 50% volume), which adds to its unique charm.
Wireless Retro speaker,Waterproof Retro speaker, Portable Vintage speaker,Rechargeable Vintage speaker
Shenzhen Focras Technology Co.,Ltd , https://www.focrass.com