Arm Community
Site
Search
User
Site
Search
User
Support forums
Arm Development Studio forum
Accessing CP14 from user mode
Jump...
Cancel
Locked
Locked
Replies
6 replies
Subscribers
119 subscribers
Views
6212 views
Users
0 members are here
Options
Share
More actions
Cancel
Related
How was your experience today?
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion
Accessing CP14 from user mode
Ackbar Ackbar
over 12 years ago
Note: This was originally posted on 9th July 2009 at
http://forums.arm.com
Hello,
I'm currently trying to change the frequency of a PXA270 processor, the system I'm working on is a Linux OS, and I would like to write a code that allows an user to change the frequency, to do so I need to write in a register of coprocessor 14. According to ARM documentation i need to use MRC/MCR instructions, I tried but I got an error : "Illegal instruction".
So I think I need to switch to supervisor mode, it seems that I could do it using SWI but even after reading some documentation I don't know how I should implement this.
I'm not even sure that what I want to do is possible, but if it is, does someone have any idea of the code I should write to switch to supervisor mode and use MRC or MCR instruction?
Thanks,
ivan lovric
over 12 years ago
Note: This was originally posted on 13th July 2009 at
http://forums.arm.com
Hi,
I managed to access coprocessor 14 and 15 of the ARM from the user space. I built an small prog which modifies the registers depending on user requirements.
It was difficult to achieve, but now it workd fine and I can modify clock speed or power management from the user space.
If interested, I can send you the prog.
Regards,
____________
Ivan Lovric
ESECO SYSTEMS
Web3.0 for security
[url="
http://www.eseco.fr
"]
http://www.eseco.fr[/url]
Cancel
Vote up
0
Vote down
Cancel
ivan lovric
over 12 years ago
Note: This was originally posted on 14th July 2009 at
http://forums.arm.com
Hello,
I did this stuff on PXA270 and it will certainly require to be adapted for OMAP.
I will create a project tomorrow on sourceforge so that the code may be adapted ond improved by the community.
Regards,
_________
Ivan Lovric
ESECO SYSTEMS
Web3.0 for security
[url="
http://www.eseco.fr
"]
http://www.eseco.fr[/url]
Cancel
Vote up
0
Vote down
Cancel
ivan lovric
over 12 years ago
Note: This was originally posted on 15th July 2009 at
http://forums.arm.com
Hello,
I just created the sourceforge project for arm CP14 and CP15 modification from user space. The name is "energy", and source code may be downloaded using svn with the following command line
svn co [url="
https://energy.svn.sourceforge.net/svnroot/energy
"]
https://energy.svn.sourceforge.net/svnroot/energy[/url]
energy
Regards,
_____________
Ivan Lovric
ESECO SYSTEMS
Web3.0 for security and risk protection
[url="
http://www.eseco.fr
"]
http://www.eseco.fr[/url]
Cancel
Vote up
0
Vote down
Cancel
Rachit Shah
over 12 years ago
Note: This was originally posted on 14th July 2009 at
http://forums.arm.com
Hi Ivan,
I am interested to do that on OMAP3530(Beagleboard). Please send me prog or guide me how to do that
thanks,
rach
Cancel
Vote up
0
Vote down
Cancel
kuan po huang
over 12 years ago
Note: This was originally posted on 5th August 2009 at
http://forums.arm.com
hi,
if you can modify kernel source, here is an option:
add system calls to read/write coprocessors
there are many tutorials about adding system calls in embedded linux kernel
embedded Linux kernel takes short time to build
googling "add system call" should help
thanks
Kuan-Po Huang
High Performance Computing Lab.
CSIE, National Chung Cheng University, Taiwan
[url="
http://hpc.cs.ccu.edu.tw/
"]
http://hpc.cs.ccu.edu.tw/[/url]
Cancel
Vote up
0
Vote down
Cancel
Martin Weidmann
over 12 years ago
Note: This was originally posted on 9th July 2009 at
http://forums.arm.com
When in User mode the only way to switch to a different (priviledged) mode is by taking an exception. For example by excuting a SWI/SVC instruction to trigger a Supervisor call exception. On a bare metal system you would have to provide a vector table and exception handlers. The handlers could deal with the accesses to CP14. But...
As you are running under an OS, the OS will handle the exceptions. I suspect you will have to write a Linux kernel driver to control the frequency changing. Then your application uses the driver as an interface. Not a Linux developer, so can't say how you'd do this.
Cancel
Vote up
0
Vote down
Cancel