8000 优化Makefile, 通过测mmap kfifo功能都是正常的 · home-coder/ring-buffer@d62d0ba · GitHub
[go: up one dir, main page]

Skip to content

Commit d62d0ba

Browse files
committed
优化Makefile, 通过测mmap kfifo功能都是正常的
1 parent e73671d commit d62d0ba

File tree

3 files changed

+42
-9
lines changed

3 files changed

+42
-9
lines changed

Makefile

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
1+
ARCH=arm #与硬件相关,需要联调
2+
#ARCH=x86
3+
4+
ifeq ($(ARCH), arm)
15
export ARCH=arm
26
CC = ~/basic/cross_compile/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc
3-
#CC = gcc
4-
CFLAGS = -O2 -Wall
7+
CFLAGS = -O2 -Wall --static
8+
else
9+
CC = gcc
10+
CFLAGS = -DORG_TEST -O2 -Wall --static
11+
endif
12+
513
INCLUDE = -I ./include
614

715
test:test.o kfifo.o
8-
${CC} ${CFLAGS} test.o kfifo.o -o $@ ${INCLUDE} -pthread
16+
${CC} test.o kfifo.o -o $@ ${INCLUDE} -lpthread
917
rm -rf *.o
1018

1119
test.o:
12-
$(CC) -c test.c ${INCLUDE} -pthread
20+
$(CC) -c test.c ${INCLUDE} -pthread $(CFLAGS)
1321
kfifo.o:
1422
$(CC) -c kfifo.c ${INCLUDE}
1523
clean:

helper/linux/mmap.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
#define PAGE_SIZE (4*1024)
88
#define PAGE_OFFSET 0xc0000000
9-
#define KERNEL_VIRT_ADDR 0x22cb7000 //此处地址即为内核模块打印的地址p,动态的不固定,需要自行修改
9+
#define KERNEL_VIRT_ADDR 0x200b5000 //此处地址即为内核模块打印的地址p,动态的不固定,需要自行修改
1010

1111
int main()
1212
{

test.c

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,14 @@
33
#include <strings.h>
44
#include <string.h>
55
#include <kfifo.h>
6+
#include <sys/types.h>
7+
#include <sys/stat.h>
8+
#include <fcntl.h>
9+
#include <stdlib.h>
10+
#include <sys/mman.h>
11+
#include <unistd.h>
612

713
#define FIFO_LENGTH 4096
8-
#define ORG_TEST
914

1015
struct ll_param {
1116
struct kfifo *fifo;
@@ -25,7 +30,7 @@ void thread_reader(void *param)
2530

2631
for (;;) {
2732
bzero(buffer, FIFO_LENGTH);
28-
read_len = kfifo_get(p->fifo, buffer, 25);
33+
read_len = kfifo_get(p->fifo, buffer, 32);
2934
if (read_len != 0) {
3035
printf("Read len:%d, buffer is :< %s >n\n", read_len,
3136
buffer);
@@ -42,22 +47,42 @@ void thread_reader(void *param)
4247
#ifdef ORG_TEST
4348
void thread_writer(void *param)
4449
{
45-
unsigned int write_len = 0;
4650
unsigned int counter = 0;
4751
unsigned char buffer[32];
4852
struct ll_param *p = (struct ll_param *)param;
4953

5054
for (counter = 0; counter < 100; counter++) {
5155
bzero(buffer, 32);
5256
sprintf((char *)buffer, "This is %d message.n", counter);
53-
write_len = kfifo_put(p->fifo, buffer, 25); //strlen((char *)buffer)
57+
kfifo_put(p->fifo, buffer, 32); //strlen((char *)buffer)
5458
usleep(100);
5559
}
5660
}
5761
#else
5862
void thread_writer(void *param)
5963
{
64+
#define PAGE_SIZE (4*1024)
65+
#define PAGE_OFFSET 0xc0000000
66+
#define KERNEL_VIRT_ADDR 0x2249c000 //此处地址即为内核模块打印的地址p,动态的不固定,需要自行修改
67+
unsigned char *buffer;
68+
int fd;
69+
unsigned long phy_addr;
70+
struct ll_param *p = (struct ll_param *)param;
71+
72+
fd = open("/dev/mem", O_RDWR);
73+
if (fd == -1)
74+
perror("open");
75+
76+
phy_addr = KERNEL_VIRT_ADDR;
77+
buffer = mmap(0, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, phy_addr);
78+
if (buffer == MAP_FAILED)
79+
perror("mmap");
80+
while (1) {
81+
kfifo_put(p->fifo, buffer, 32); //strlen((char *)buffer)
82+
}
6083

84+
munmap(buffer, PAGE_SIZE);
85+
close(fd);
6186
}
6287
#endif
6388

0 commit comments

Comments
 (0)
0