How to directly access the controller using a Linux driver

Source: Internet
Author: User

Before enabling MMU, you can directly access it using a physical address. After MMU is enabled, You need to map the physical address to a virtual address and then access it with the virtual address. For example, if the physical address of a peripheral register is regaddr = 0x0200000 and the value to be read/written is value (unsigned int type), then:
Before enabling MMU:
Read:
Value = * (volatile unsigned int *) regaddr;
Write:
* (Volatile unsigned int *) regaddr = value;
After MMU is Enabled:
You must use ioremap for ing.
Unsigned int regaddr = 0;
Performance_regaddr = ioremap (regaddr, sizeof (unsigned INT ));
Read:
Value = * (volatile unsigned int *) pai_regaddr;
Write:
* (Volatile unsigned int *) pai_regaddr = value;
Of course, if you do not use it, remember to use iounmap () to recycle resources.

PS: if some physical memory segments have completed this ing during kernel initialization, you can use the mapped virtual address directly.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.