7 How to get the Value of SFR after Linux booting - limingth/LASO GitHub Wiki
limingth@ubuntu:~/led-drv-on-linux$ cat main.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
extern void * init(int addr);
int main(int argc, char * argv[])
{
volatile int * vmem;
int i = 0;
if (argc == 1)
{
printf("./sfr addr size\n");
return 0;
}
printf("addr = %s, size = %s \n", argv[1], argv[2]);
unsigned int addr = strtoul(argv[1], 0, 16);
int size = atoi(argv[2]);
printf("SFR addr = 0x%x, size = 0x%x\n", addr, size);
vmem = init(addr);
for (i = 0; i < size; i++)
{
if (i % 4 == 0)
printf("%8x : ", (int)(addr+i*4));
printf("%8x ", vmem[i]);
if(i % 4 == 3)
printf("\n");
}
return 0;
}
limingth@ubuntu:~/led-drv-on-linux$ cat init.c
#include <fcntl.h>
#include <sys/mman.h>
#include <stdio.h>
#include <stdlib.h>
void * init(int addr)
{
void * vmem;
int fd = open("/dev/mem", O_RDWR);
if (fd < 0)
{
printf("FD error!\n");
exit(1);
}
vmem = mmap(0,1,PROT_READ|PROT_WRITE, MAP_SHARED, fd, addr);
if (vmem == MAP_FAILED)
{
printf("Mmap error!\n");
exit(1);
}
return vmem;
}
limingth@ubuntu:~/led-drv-on-linux$ cat Makefile
all:
gcc init.c main.c -o a.out
arm-linux-gcc init.c main.c -o sfr
cp sfr ../
clean:
-rm *.obj *.o app
[root@FriendlyARM /tmp]# ./sfr 0xe0100000 256
addr = 0xe0100000, size = 256
SFR addr = 0xe0100000, size = 0x100
e0100000 : 2cf 0 1c95 0
e0100010 : 2238 0 0 0
e0100020 : fff 0 0 0
e0100030 : 0 0 0 0
e0100040 : 0 0 0 0
e0100050 : 0 0 0 0
e0100060 : 0 0 0 0
e0100070 : 0 0 0 0
e0100080 : 0 0 0 0
e0100090 : 0 0 0 0
e01000a0 : 0 0 0 0
e01000b0 : 0 0 0 0
e01000c0 : 0 0 0 0
e01000d0 : 0 0 0 0
e01000e0 : 0 0 0 0
e01000f0 : 0 0 0 0
e0100100 : a07d0301 0 a29b0c01 0
e0100110 : a8430303 bcee 0 0
e0100120 : a06c0603 0 0 0
e0100130 : 0 0 0 0
e0100140 : 0 0 0 0
e0100150 : 0 0 0 0
e0100160 : 0 0 0 0
e0100170 : 0 0 0 0
e0100180 : 0 0 0 0
e0100190 : 0 0 0 0
e01001a0 : 0 0 0 0
e01001b0 : 0 0 0 0
e01001c0 : 0 0 0 0
e01001d0 : 0 0 0 0
e01001e0 : 0 0 0 0
e01001f0 : 0 0 0 0
e0100200 : 10001111 600000 0 666000
e0100210 : 66666666 0 7 0
e0100220 : 0 0 0 0
e0100230 : 0 0 0 0
e0100240 : 0 0 0 0
e0100250 : 0 0 0 0
e0100260 : 0 0 0 0
e0100270 : 0 0 0 0
e0100280 : ffffffff ffffffff 0 0
e0100290 : 0 0 0 0
e01002a0 : 0 0 0 0
e01002b0 : 0 0 0 0
e01002c0 : 0 0 0 0
e01002d0 : 0 0 0 0
e01002e0 : 0 0 0 0
e01002f0 : 0 0 0 0
e0100300 : 14131440 300400 0 333000
e0100310 : 9999dddd 0 70000 0
e0100320 : 0 0 0 0
e0100330 : 0 0 0 0
e0100340 : 0 0 0 0
e0100350 : 0 0 0 0
e0100360 : 0 0 0 0
e0100370 : 0 0 0 0
e0100380 : 0 0 0 0
e0100390 : 0 0 0 0
e01003a0 : 0 0 0 0
e01003b0 : 0 0 0 0
e01003c0 : 0 0 0 0
e01003d0 : 0 0 0 0
e01003e0 : 0 0 0 0
e01003f0 : 0 0 0 0
[root@FriendlyARM /tmp]#
[root@FriendlyARM /tmp]# ./sfr 0xf8000000 256
addr = 0xf8000000, size = 256
SFR addr = 0xf8000000, size = 0x100
f8000000 : 417 a3c060 0 0
f8000010 : 70701 270401 879df 0
f8000020 : 0 0 8077 0
f8000030 : 0 4 0 7d517d51
f8000040 : 0 0 0 0
f8000050 : 0 0 0 0
f8000060 : 0 ef90f 0 1fe00
f8000070 : 0 0 0 0
f8000080 : 0 0 0 0
f8000090 : 0 0 0 0
f80000a0 : 0 0 0 0
f80000b0 : 35faf000 0 0 0
f80000c0 : 0 0 0 0
f80000d0 : 0 0 0 0
f80000e0 : 3602e800 0 0 0
f80000f0 : 0 0 0 6000
f8000100 : 0 0 780 0
f8000110 : 0 0 0 0
f8000120 : 0 0 0 0
f8000130 : 9001 0 0 0
f8000140 : 0 0 0 0
f8000150 : 0 0 0 0
f8000160 : 0 0 0 0
f8000170 : 0 0 0 0
f8000180 : 0 0 0 0
f8000190 : 0 0 0 0
f80001a0 : 0 0 0 0
f80001b0 : 0 0 0 0
f80001c0 : 10040100 0 0 0
f80001d0 : 0 0 0 0
f80001e0 : 0 0 0 1000100
f80001f0 : 0 0 1000100 1800080
f8000200 : 0 0 0 0
f8000210 : 0 0 0 0
f8000220 : 0 0 0 0
f8000230 : 0 0 0 0
f8000240 : 0 c2 c2 c2
f8000250 : c2 0 0 0
f8000260 : 0 0 0 0
f8000270 : 0 0 0 0
f8000280 : 0 0 0 0
f8000290 : 0 0 0 0
f80002a0 : 0 0 0 0
f80002b0 : 0 0 0 0
f80002c0 : 0 0 0 0
f80002d0 : 0 0 0 0
f80002e0 : 0 0 0 0
f80002f0 : 0 0 0 0
f8000300 : 0 0 0 0
f8000310 : 0 0 0 0
f8000320 : 0 0 0 0
f8000330 : 0 0 0 0
f8000340 : 0 0 0 0
f8000350 : 0 0 0 0
f8000360 : 0 0 0 0
f8000370 : 0 0 0 100000
f8000380 : 300020 500040 700060 900080
f8000390 : b000a0 d000c0 f000e0 1100100
f80003a0 : 1300120 1500140 1700160 1900180
f80003b0 : 1b001a0 1d001c0 1f001e0 2100200
f80003c0 : 2300220 2500240 2700260 2900280
f80003d0 : 2b002a0 2d002c0 2f002e0 3100300
f80003e0 : 3300320 3500340 3700360 3900380
f80003f0 : 3b003a0 3d003c0 3f003e0 400
f80040a0 : 0 0 0 0
f80040b0 : 35faf000 0 0 0
f80040c0 : 0 0 0 0
f80040d0 : 0 0 0 0
f80040e0 : 3602e800 0 0 0
f80040f0 : 0 0 0 0
f8004100 : 0 0 780 0
[root@FriendlyARM /]# ./sfr 0xeee10000 64
addr = 0xeee10000, size = 64
SFR addr = 0xeee10000, size = 0x40
eee10000 : 1 0 7f 0
eee10010 : 0 0 0 0
eee10020 : 0 0 0 0
eee10030 : 0 0 0 0
eee10040 : 0 0 0 0
eee10050 : 0 0 0 0
eee10060 : 0 0 0 0
eee10070 : 0 0 0 0
eee10080 : 1 0 7f 0
eee10090 : 0 0 0 0
eee100a0 : 0 0 0 0
eee100b0 : 0 0 0 0
eee100c0 : 0 0 0 0
eee100d0 : 0 0 0 0
eee100e0 : 0 0 0 0
eee100f0 : 0 0 0 0
[ 54.517075] ASoC_mini210: SCLK=67738000 PSR=6 RCLK=11289600 RFS=256 BFS=32
[root@FriendlyARM /]# ./sfr 0xeee30000 64
addr = 0xeee30000, size = 64
SFR addr = 0xeee30000, size = 0x40
eee30000 : 8050c185 600 3f40 8500
eee30010 : 0 0 0 0
eee30020 : 0 0 7fff0000 0
[root@FriendlyARM /tmp]# ./sfr 0xeee30000 256
addr = 0xeee30000, size = 256
SFR addr = 0xeee30000, size = 0x100
eee30000 : 8050cc91 100 40 0
eee30010 : 0 0 0 0
eee30020 : 0 0 7fff0000 0
eee30030 : 0 0 0 0
eee30040 : 0 0 0 0
eee30050 : 0 0 0 0
eee30060 : 0 0 0 0
eee30070 : 0 0 0 0
eee30080 : 0 0 0 0
eee30090 : 0 0 0 0
eee300a0 : 0 0 0 0
eee300b0 : 0 0 0 0
eee300c0 : 0 0 0 0
eee300d0 : 0 0 0 0
eee300e0 : 0 0 0 0
eee300f0 : 0 0 0 0
eee30100 : 8050c491 100 40 0
eee30110 : 0 0 0 0
eee30120 : 0 0 7fff0000 0
eee30130 : 0 0 0 0
eee30140 : 0 0 0 0
eee30150 : 0 0 0 0
eee30160 : 0 0 0 0
eee30170 : 0 0 0 0
eee30180 : 0 0 0 0
eee30190 : 0 0 0 0
eee301a0 : 0 0 0 0
eee301b0 : 0 0 0 0
eee301c0 : 0 0 0 0
eee301d0 : 0 0 0 0
eee301e0 : 0 0 0 0
eee301f0 : 0 0 0 0
eee30200 : 8050c491 100 40 0
eee30210 : 0 0 0 0
eee30220 : 0 0 7fff0000 0
eee30230 : 0 0 0 0
eee30240 : 0 0 0 0
eee30250 : 0 0 0 0
eee30260 : 0 0 0 0
eee30270 : 0 0 0 0
eee30280 : 0 0 0 0
eee30290 : 0 0 0 0
eee302a0 : 0 0 0 0
eee302b0 : 0 0 0 0
eee302c0 : 0 0 0 0
eee302d0 : 0 0 0 0
eee302e0 : 0 0 0 0
eee302f0 : 0 0 0 0
eee30300 : 8050cc91 100 40 0
eee30310 : 0 0 0 0
eee30320 : 0 0 7fff0000 0
eee30330 : 0 0 0 0
eee30340 : 0 0 0 0
eee30350 : 0 0 0 0
eee30360 : 0 0 0 0
eee30370 : 0 0 0 0
eee30380 : 0 0 0 0
eee30390 : 0 0 0 0
eee303a0 : 0 0 0 0
eee303b0 : 0 0 0 0
eee303c0 : 0 0 0 0
eee303d0 : 0 0 0 0
eee303e0 : 0 0 0 0
eee303f0 : 0 0 0 0
[root@FriendlyARM /tmp]#
[root@FriendlyARM /tmp]# ./sfr 0xe2100000 256
addr = 0xe2100000, size = 256
SFR addr = 0xe2100000, size = 0x100
e2100000 : e00 0 0 0
e2100010 : 0 0 0 0
e2100020 : 0 0 0 0
e2100030 : 0 0 0 0
e2100040 : 0 0 0 0
e2100050 : 0 0 0 0
e2100060 : 0 0 0 0
e2100070 : 0 0 0 0
e2100080 : 0 0 0 0
e2100090 : 0 0 0 0
e21000a0 : 0 0 0 0
e21000b0 : 0 0 0 0
e21000c0 : 0 0 0 0
e21000d0 : 0 0 0 0
e21000e0 : 0 0 0 0
e21000f0 : 0 0 0 0
e2100100 : e00 0 0 0
e2100110 : 0 0 0 0
e2100120 : 0 0 0 0
e2100130 : 0 0 0 0
e2100140 : 0 0 0 0
e2100150 : 0 0 0 0
e2100160 : 0 0 0 0
e2100170 : 0 0 0 0
e2100180 : 0 0 0 0
e2100190 : 0 0 0 0
e21001a0 : 0 0 0 0
e21001b0 : 0 0 0 0
e21001c0 : 0 0 0 0
e21001d0 : 0 0 0 0
e21001e0 : 0 0 0 0
e21001f0 : 0 0 0 0
e2100200 : e00 0 0 0
e2100210 : 0 0 0 0
e2100220 : 0 0 0 0
e2100230 : 0 0 0 0
e2100240 : 0 0 0 0
e2100250 : 0 0 0 0
e2100260 : 0 0 0 0
e2100270 : 0 0 0 0
e2100280 : 0 0 0 0
e2100290 : 0 0 0 0
e21002a0 : 0 0 0 0
e21002b0 : 0 0 0 0
e21002c0 : 0 0 0 0
e21002d0 : 0 0 0 0
e21002e0 : 0 0 0 0
e21002f0 : 0 0 0 0
e2100300 : e00 0 0 0
e2100310 : 0 0 0 0
e2100320 : 0 0 0 0
e2100330 : 0 0 0 0
e2100340 : 0 0 0 0
e2100350 : 0 0 0 0
e2100360 : 0 0 0 0
e2100370 : 0 0 0 0
e2100380 : 0 0 0 0
e2100390 : 0 0 0 0
e21003a0 : 0 0 0 0
e21003b0 : 0 0 0 0
e21003c0 : 0 0 0 0
e21003d0 : 0 0 0 0
e21003e0 : 0 0 0 0
e21003f0 : 0 0 0 0
[root@FriendlyARM /tmp]#
./sfr 0xe1700000 256
addr = 0xe1700000, size = 256
SFR addr = 0xe1700000, size = 0x100
e1700000 : 3fc4 0 ff 8000
e1700010 : 8000 0 0 0
e1700020 : 3fc4 0 ff 8000
e1700030 : 8000 0 0 0
e1700040 : 3fc4 0 ff 8000
e1700050 : 8000 0 0 0
e1700060 : 3fc4 0 ff 8000
e1700070 : 8000 0 0 0
e1700080 : 3fc4 0 ff 8000
e1700090 : 8000 0 0 0
e17000a0 : 3fc4 0 ff 8000
e17000b0 : 8000 0 0 0
e17000c0 : 3fc4 0 ff 8000
e17000d0 : 8000 0 0 0
e17000e0 : 3fc4 0 ff 8000
e17000f0 : 8000 0 0 0
e1700100 : 3fc4 0 ff 8000
e1700110 : 8000 0 0 0
e1700120 : 3fc4 0 ff 8000
e1700130 : 8000 0 0 0
e1700140 : 3fc4 0 ff 8000
e1700150 : 8000 0 0 0
e1700160 : 3fc4 0 ff 8000
e1700170 : 8000 0 0 0
e1700180 : 3fc4 0 ff 8000
e1700190 : 8000 0 0 0
e17001a0 : 3fc4 0 ff 8000
e17001b0 : 8000 0 0 0
e17001c0 : 3fc4 0 ff 8000
e17001d0 : 8000 0 0 0
e17001e0 : 3fc4 0 ff 8000
e17001f0 : 8000 0 0 0
e1700200 : 3fc4 0 ff 8000
e1700210 : 8000 0 0 0
e1700220 : 3fc4 0 ff 8000
e1700230 : 8000 0 0 0
e1700240 : 3fc4 0 ff 8000
e1700250 : 8000 0 0 0
e1700260 : 3fc4 0 ff 8000
e1700270 : 8000 0 0 0
e1700280 : 3fc4 0 ff 8000
e1700290 : 8000 0 0 0
e17002a0 : 3fc4 0 ff 8000
e17002b0 : 8000 0 0 0
e17002c0 : 3fc4 0 ff 8000
e17002d0 : 8000 0 0 0
e17002e0 : 3fc4 0 ff 8000
e17002f0 : 8000 0 0 0
e1700300 : 3fc4 0 ff 8000
e1700310 : 8000 0 0 0
e1700320 : 3fc4 0 ff 8000
e1700330 : 8000 0 0 0
e1700340 : 3fc4 0 ff 8000
e1700350 : 8000 0 0 0
e1700360 : 3fc4 0 ff 8000
e1700370 : 8000 0 0 0
e1700380 : 3fc4 0 ff 8000
e1700390 : 8000 0 0 0
e17003a0 : 3fc4 0 ff 8000
e17003b0 : 8000 0 0 0
e17003c0 : 3fc4 0 ff 8000
e17003d0 : 8000 0 0 0
e17003e0 : 3fc4 0 ff 8000
e17003f0 : 8000 0 0 0
[root@FriendlyARM /tmp]#