"Although the products of ST company are rich in themselves, the most popular and influential in the market are of course the Cortex-M series. From the Cortex-M0 series of several K flash to the high-performance cortex-m7 series, it is also interspersed with wireless series, low-power series and plug-in SPI flash. As a cross-border series of code space, almost all of them are leaders in the corresponding market.
As a member of blue butterfly powder, I have also summarized the reasons why STM32 stands out:
1. With the product iteration speed of market center, we keenly seized the opportunity of Cortex-M kernel replacing 8-bit and 16 bit cores.
2. Product diversity. Almost all application scenarios have targeted products.
3. Establishment of development ecology, including ingenious production of software library and revolutionary innovation of development platform (cubemx tool saves me a lot of development time).
The third most important point is the competitiveness barrier, which should be the most important factor to occupy the first place in the market.
Of course, before the launch of stm32mp1, ST company was absent in the MPU market. Before, the H7 series with the highest performance can run to more than 400 MHz and can plug in SPI flash. However, it cannot run complex operating systems. The ceiling is determined by the positioning of the Cortex-M kernel itself, and it is still not an MPU. Therefore, the launch of MP1 series fills this shortcoming. Because ST company has accumulated development ecological experience and advantages in STM32 products, programmers have higher expectations for MP1. We should know that embedded chips are never based on absolute hardware parameters. We have seen many chips with excellent hardware parameters, which perform generally in the market. The reason is that the development is difficult, the public information is incomplete, the supporting tools are not friendly, and so on. Therefore, I call stm32mp1 the enhanced STM32. I hope that ST company can fill its own product territory, improve the development skills and efficiency of the whole embedded development group, and work together to create more meaningful products.
board
Let's take a look at the board first
(click the picture to zoom in)
There are two versions of this series of boards: stm32mp157a-dk1 and stm32mp157c-dk2. The protagonist of this paper is the former. The difference between the two is:
1. The main control chips of DK1 and DK2 are different. Stm32mp157aac and stm32mp157cac, the former is positioned a little lower than the latter:
1.1 the maximum frequency of cortex-a7 of 157A / 157c is 650MHz.
1.2157a lacks the AES / DES / RSA hardware encryption unit and secureboot function owned by 157c
2. DK2 is equipped with a touch screen, but DK1 is not.
3. The board of DK2 is welded with WiFi / Bluetooth module, and DK1 is empty.
In addition, the two boards are basically the same, and the layout of the boards is the same. If there are welding experts, it is also feasible to change the main control chip of two boards. Therefore, most of their demo programs can also be shared.
Chip
This chip has rich resources and is positioned for industrial control / high-end consumer applications. Here, the author doesn't copy the data manual. If you are interested, you can download it. Its main kernel is dual cortex-a7 + cortex-m4, neon, FPU, GPU, etc. MP1 mainly uses cortex-a7. Cortex-m4 can be regarded as a slave MCU. Because the chip itself does not have flash, cortex-a7 needs to load the executable code into the RAM space that cortex-m4 can access. The NV space on the board is a TF card, and the main memory space is 512mbyte DDR. Considering that most of the students who use this chip are former users of STM32, we briefly introduce some cores. The current ARM core mainly has three series: cortex-a, cortex-r and cortex-m.
Cortex-M series
Everyone is familiar with it. It can only support thumb / thumb2 instruction set without MMU. It is mainly for medium and low-end applications. For example, a large part of the body temperature gun during the epidemic is STM32. Among them, there are Cortex-M0 / M1, Cortex-M3, cortex-m4, cortex-m7, cortex-m23, cortex-m33, cortex-m35 and other cores for applications with different complexity.
Cortex-r series
It is a kernel for real-time applications, such as vehicle ECU, elevator controller, high-precision motor control, etc. at present, we have not seen this series of products of ST company. It supports arm instruction and thumb / thumb 2 instruction. It can be regarded as an upgraded product of ARM7.
Cortex-a series
It is the kernel for complex applications. Generally speaking, it is the kernel running Linux / Android. The well-known Qualcomm / Hisilicon chips are the cores of this series. The cortex-a7 of this board is the core with relatively low power consumption. However, it is not the lowest, and the cortex-a5 is the lowest series a kernel. Note that cortex-a7 is the arm V5 architecture, Moreover, cortex-a7 is the kernel introduced after cortex-a9. It is similar to Cortex-M0 after Cortex-M3. Of course, these details are not important
In terms of system, of course, cortex-a series chips can run any mainstream system or not at all. However, this chip mainly runs Linux / Android. Considering the specific running frequency and positioning application scenarios, Linux should be the most choice. This paper also assumes that everyone runs Linux
The development board of stm32mp1 is divided into several levels, and the difficulty increases step by step, but it is not necessary to develop to the lowest level to be the "hardest core". In fact, many products in industry are the results of secondary development or even n-time development. The key is the quality of design and code and the value created by products
For this development board, developers can:
1. Develop on the provided Linux image, and treat the development board as a mini industrial computer
2. Use the SDK provided by openstlinux to develop your own application
3. Customize your own kernel and image by using the open source openst Linux source code
4. Do not use Linux, start from baremetal, transplant / run other OS, or do not use OS at all
If you want to involve the development after the above layer 2, you'd better prepare a Linux development machine, preferably a local Linux machine running Ubuntu 18.04. Running virtual machine + image on windows is also a convenient combination. Wsl2 of windows10 is also OK
Start / login Linux on board
After you get the board, you will have a matching made startup TF card, insert it, and configure the startup option switch on the back of the board to (1,1)
When the first type (0,0) is configured, it is a forced DFU, which is used to burn the memory on the board. This paper will not expand temporarily, but it must be pointed out that the stlink utility cannot be used for this purpose. Stm32subprogrammer should be used. After the SD card is configured and started, plug in the power supply. Several interfaces on the board are as follows:
1. Power interface, type C power supply, any type C source can supply power. Note that this board does not support external power supply. The author uses the type C power supply of think pad, and the type C power supply of Huawei / Xiaomi should be OK. Or plug it into the computer
2. Gigabit network port. It is recommended to plug it into your home router. Because DK1 has no wireless network connection, this is the only network interface
3. TF card slot. There is no nandflash / norflash / EMMC on DK1 / DK2 board, which is the only NV storage. If you want to use other cards as startup disk, it is recommended to use at least 16g
4. Audio interface with microphone. Basically any headset is OK
5. Stlink V2-1 interface. In addition to stlink, there is a virtual serial port
6. HDMI interface, basically any display with HDMI. The factory comes with Linux image and GUI interface
7. USB interface, which is the USB device port of the board and can be used as DFU
8. USB host interface, which can be connected to 4 USB devices. The author has tested the keyboard and mouse, including wireless keyboard and mouse
There are three ways to log in to Linux on the board from the perspective of operation:
1. The virtual serial port of stlink is the only option if you want to stop at uboot for operation
2. Connect the keyboard / mouse / monitor and directly use the xterm of openstlinux
3. SSH login
Play With Linux
In this chapter, we first play on the existing Linux image and do some experiments
1. Play network audio
Make sure your development board can access the network resources to be played. You can ping them first
If Ping fails, solve the network problem first
Use the existing tool mpg123 to play
Audio is the output port of the board. You can plug in headphones or speakers to enjoy it. If you want to adjust the volume, use this command: alsamixer
Use the direction keys to adjust the volume
If you want to download the audio to the local and listen later:
Get the latest 2019 ncov data
At the end of 2019 and the beginning of 2020, the epidemic affects the hearts of thousands of people. Even though the domestic situation is basically improved, the global situation is still worrying. Here, the world's latest confirmed / suspected / death data are obtained through the board. If you spend more time, add a graphical interface and add an LCD or large screen, you can make a display board. Only data are obtained here, Get the GUI part of the data. If you are interested, you can do it or post again later
First, find a data source. Here, use a data source from Johns Hopkins University in the United States. You can pull all data using curl:
After entering the above command, the console will print the latest data. Almost all regions in the world are covered. However, there are many data and some processing needs to be done. For example, just print the diagnostic data of all regions in China:
Save the above script as source code and then run:
This experiment consists of two parts:
1. Get data from the network. If you use C + + / C + +, you can use curl's API. If you use python, the standard library has built-in urllib and other libraries;
2. For the result analysis, if C / C + + is used, many open source JSON libraries are available. If Python is used, the standard library has built-in JSON support
If graphical display data is involved, QT, GTK, or Tkinter
GPIO control
This experiment uses the GPIO control program built in the system to do the water lamp experiment. The LEDs LD5, ld6 and LD7 on the control board. Among them, LD5 and ld6 are lit by low logic and LD7 is lit by high logic. LD8 is Linux itself, which cannot be controlled by the user program
CTRL + Z or Ctrl + C can exit
Write a HelloWorld / C++
Because the board runs Linux, the tool chain can be installed using the package management tool of the development machine itself. If you want to use the unique library on the board, you also need to configure the SDK and BSP of openstlinux. Here we just print Hello world. Use the standard development tool chain
To install the G + + tool chain on the development machine:
Casually find a C + + test code originally written on the computer:
Compile connection:
If there are no parameters, the output of build is a.out
Get this a.out to the file system on the development board through the network or copy, and add executable attributes to run it: read the full text, original title: share | stm32mp157a-dk1 development board evaluation
Source: [micro signal: STM32]_ STM8_ MCU, WeChat official account: TI] welcome to add attention! Please indicate the source of the article“
Our other product: