完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
fs4412开发板学习笔记(六)
嵌入式产品 高端嵌入式产品(运行OS) 低端嵌入式产品(不需要OS) 1.Linux 系统编程 “Everything in Unix is a file” 一切皆文件 【1】文件I/O open ioctl (i/o control) close 【2】文件描述符 是一个非负的整数。用于标识一个进程打开的文件。 分配原则 : 顺序分配、最小可用 【3】open 打开文件 #include 《sys/types.h》 #include 《sys/stat.h》 #include 《fcntl.h》 int open(const char *pathname, int flags); 函数参数: [1] pathname : 文件路径 [2] flags : 打开方式 O_RDONLY 只读 O_WRONLY 只写 O_RDWR 读写 O_NONBLCK 非阻塞 返回值: 成败 返回文件描述符(》=0 整数) 失败 -1 【4】close 关闭文件 #include 《unistd.h》 int close(int fd); 函数参数: fd : 需要关闭的文件的文件描述符 【5】ioctl 控制文件/向驱动程序发送请求 #include 《sys/ioctl.h》 int ioctl(int d, int request, …); 函数参数: [1]d : 控制的文件的文件描述符 [2]request : 向驱动程序发送请求(却决于驱动程序) LED_ON LED_OFF [3] … : 可变参数 (取决于命令) 返回值: 成功 返回 0 失败 返回 -1 【6】遇到 “No such file or directory” 问题该如何解决 分析: 缺少对应的驱动程序 安装驱动程序 1)准备工作(Ubuntu) 将 led.ko pwm.ko 驱动程序模块 拷贝到/source/rootfs 修改权限: sudo chmod 777 /source/rootfs -R 2)在开发板上操作 insmod XXXX.ko //每次启动开发板时都需要执行 开机自动加载驱动 fs@ubuntu:/source/rootfs$ vim etc/init.d/rcS 在最后两行添加 #!/bin/sh #This is the first script called by init process /bin/mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /***in/mdev》/proc/sys/kernel/hotplug /***in/mdev -s insmod led.ko insmod pwm.ko 查看Linux支持驱动 cat /proc/devices 使用交叉编译器 arm-none-linux-gnueabi-gcc hello.c -o hello 。/hello 代码对齐(命令模式) gg = G #include 《unistd.h》 unsigned int sleep(unsigned int seconds); //秒 #include 《unistd.h》 int usleep(useconds_t usec); //微秒 1s = 1000 ms = 1000000 us 作业: 1)完成LED代码 2)完成音乐代码(搜乐谱 自己写歌 2-3首) |
|
|
|
只有小组成员才能发言,加入小组>>
2572 浏览 0 评论
772浏览 1评论
531浏览 0评论
280浏览 0评论
471浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-4 10:32 , Processed in 1.190023 second(s), Total 48, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号