After working on DMA for several days, I finally succeeded. It was just a small step, and I need to continue to improve it. Why is it so difficult to configure several DMA registers? I need to think about why. Let me record it first.
Another day has passed, and now I still don’t quite understand some issues. It may be due to the limitation of my knowledge or some knowledge that I am not familiar with. First of all, I started by transferring data from UART to memory, but the problem that has not been solved until now is here, that is, a problem about the physical address of DMA transmission. First of all, due to my unfamiliarity with C language, I became very confused about the definition of addresses in ARM. In another article, I will analyze the definition of #define rUTXH0 (*(volatile unsigned char *)0x50000020). In fact, to do DMA experiments, just allocate a string constant from the memory and then transfer it to the UART send buffer register. However, from the serial port to the memory, the physical address is one aspect. In fact, after allocating a physical address, when debugging with jlink, you can get data in the first transmission, but later you can only see the change in the address and the data no longer changes. The possible reason is that the memory needs to be checked and cleared before reading and writing? I don’t understand. About
A few summary of the serial port:
1. DMA addresses require continuous physical addresses. Generally, applications allocate linear addresses and virtual addresses, which may be discontinuous. Address mapping is needed here. This is very important. Secondly, distinguish the difference between string constants and global character arrays, and look more at the allocation relationship of memory areas. 2. DMA initialization can have hardware and software requests. The DMA request in 2440 is automatically issued by the hardware, that is, the initialization of DMA is automatically completed by the hardware, and no programming initialization is required. When using an external DMA source, you need to program and initialize DMA yourself. 3. DMA register configuration, 2 types of transfer sizes, unit and burst. 2 types of mode request and handshake, demand and handshake. 2 types of service single service and overall service, single and whole.
Previous article:Bare Metal Series - DMA Work
Next article:Bare metal series——supervivi burning
- Popular Resources
- Popular amplifiers
- Learn ARM development(16)
- Learn ARM development(17)
- Learn ARM development(18)
- Embedded system debugging simulation tool
- A small question that has been bothering me recently has finally been solved~~
- Learn ARM development (1)
- Learn ARM development (2)
- Learn ARM development (4)
- Learn ARM development (6)
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
- LED chemical incompatibility test to see which chemicals LEDs can be used with
- Application of ARM9 hardware coprocessor on WinCE embedded motherboard
- What are the key points for selecting rotor flowmeter?
- LM317 high power charger circuit
- A brief analysis of Embest's application and development of embedded medical devices
- Single-phase RC protection circuit
- stm32 PVD programmable voltage monitor
- Introduction and measurement of edge trigger and level trigger of 51 single chip microcomputer
- Improved design of Linux system software shell protection technology
- What to do if the ABB robot protection device stops
- ASML predicts that its revenue in 2030 will exceed 457 billion yuan! Gross profit margin 56-60%
- Detailed explanation of intelligent car body perception system
- How to solve the problem that the servo drive is not enabled
- Why does the servo drive not power on?
- What point should I connect to when the servo is turned on?
- How to turn on the internal enable of Panasonic servo drive?
- What is the rigidity setting of Panasonic servo drive?
- How to change the inertia ratio of Panasonic servo drive
- What is the inertia ratio of the servo motor?
- Is it better for the motor to have a large or small moment of inertia?
- How many versions of the C language main function are there? Which one is right?
- stm32f4 serial port 3 prompts NE error
- Design and implementation of asynchronous FIFO based on Verilog HDL.pdf
- The common-mode gain, differential-mode gain, and power supply rejection ratio of the op amp are shown in the figure.
- 01. Environment construction and driving 0.96OLED
- 【RT-Thread software package application work】Small alarm clock
- Qorvo 100 MHz Envelope Tracking Solution for 5G
- 【Beetle ESP32-C3】3. Adjust LED brightness with knob (potentiometer) (Arduino)
- China's first batch of autonomous driving unmanned commercial licenses issued! Do you dare to sit in an unmanned car? ?
- GDB debugging and DSP