從電路圖中看出,gpio低電平有效(led亮)。gpk共有16個埠,每個埠由三個暫存器控制——控制暫存器(gpkcon)、資料暫存器(gpkdat)和上拉暫存器(gpkpud),每個暫存器都是32位,如下圖所示。
gpk的控制暫存器分為兩個,gpkcon0控制0~8好埠,gpkcon1控制9~15號埠。控制暫存器連續的4位控制乙個埠,如下圖中led對應的控制暫存器。
makefile檔案如下:
arch=arm
compile=arm-linux-
ifneq ($(kernelrelease),)
obj-m:=tiny6410_leds.o
else
pwd := $(shell pwd)
endif
all:
make -c$(kdir) m=$(pwd) modules arch=$(arch) cross_compile=$(compile)
clean:
rm -f *.ko*.o *.mod.o *.od.c *.symvers
使用者空間測試檔案為led.c如下,
#include
#include
#include
#include
#include
#include
#include
#definedevice_name"/dev/tiny6410_leds"
intmain(int argc,char**argv)
int on;
int led_no;
int fd;
if (argc != 3 || sscanf(argv[1], "%d",&led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 || on < 0|| on > 1 || led_no < 0 || led_no > 3) {
fprintf(stderr,"usage: leds led_no 0|1\n");
exit(1);
fd =open(device_name, 0);
if (fd < 0) {
perror("opendevice leds");
exit(1);
ioctl(fd,on, led_no);
close(fd);
return 0;
使用arm-linux編譯,友善提供了乙個編譯led.c的makefile檔案,我們關注其中的install目標,該目標能將編譯後的程式安裝到系統中。
ifndef destdir
destdir ?=/tmp/friendlyarm/mini6410/rootfs
endif
cflags =-wall -o2
cc =arm-linux-gcc
install =install
target =led
all: $(target)
led: led.c
$(cc)$(cflags) $< -o $@
install: $(target)
$(install)$^ $(destdir)/usr/bin
clean distclean:
rm -rf *.o$(target)
.phony: $(phony) install clean distclean
Tiny6410核心移植
一 開發環境 宿主機 fedora9.0 或 ubuntu10.04 開發板 tiny6410 編譯器 4.3.2 二 核心移植 linux 2.6.38 2.解壓 進入根目錄下的 home poplar expr4 kernel目錄,解壓原始碼 tar xvfj home poplar expr4...
Tiny6410學習 Linux命令
今天再來記錄一下一些非常常用的linux基礎命令知識,以備後期來查。1.新增使用者 useradd smb 新增名字為smb的使用者 2.修改密碼 passwd smb 修改smb使用者的密碼 3.切換使用者 su root 切換到root使用者,並將root環境變數同時帶入 就是管理員賬號了,也就...
Tiny6410 交叉編譯helloworld程式
在工作目錄下建立helloworld.c檔案 cpp view plain copy print include main 儲存關閉後。編譯helloworld檔案 csharp view plain copy print root snail home workdir qt project hel...