[linux]文件互传

sudo apt-get update
sudo apt-get install vsftpd
sudo vi /etc/vsftpd.conf
默认情况下,“write_enable=YES”前面有一个“#”号,我们需要将其去掉,使能该配置。
修改完成后保存退出,然后执行如下命令重启 FTP 服务:

sudo /etc/init.d/vsftpd restart
可通过如下命令确认 FTP 服务是否开启:
ps -aux | grep vsftpd | grep -v grep

使用FileZilla软件进行文件互传

[linux]设备号申请

没有指定设备号
int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
指定了设备号
int register_chrdev_region(dev_t from, unsigned count, const char *name)

释放设备号
void unregister_chrdev_region(dev_t from, unsigned count)

———————————————
字符设备结构
cdev
cdev 中有两个重要的成员变量: ops 和 dev,这两个就是字符设备文件操作函数集合
file_operations 以及设备号 dev_t。编写字符设备驱动之前需要定义一个 cdev 结构体变量,这个
变量就表示一个字符设备,
定义好 cdev 变量以后就要使用 cdev_init 函数对其进行初始化, cdev_init 函数原型如下:
void cdev_init(struct cdev *cdev, const struct file_operations *fops)

[linux]加载驱动

//加载驱动
modprobe led.ko
如果提示无法打开“modules.dep” 输入 depmod

查看设备
cat /proc/devices

创建设备节点
mknod /dev/chrdevbase c 200 0

[linux]申请设备号

1.静态申请
cat /proc/devices //查看已有设别号

2.动态申请

int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
dev:保存申请到的设备号。
baseminor: 次设备号起始地址, alloc_chrdev_region 可以申请一段连续的多个设备号,这些设备号的主设备号一样,但是次设备号不同,次设备号以 baseminor 为起始地址地址开始递增。一般 baseminor 为 0,也就是说次设备号从 0 开始。
count: 要申请的设备号数量。
name:设备名字。

注销字符设备之后要释放掉设备号,设备号释放函数如下:
void unregister_chrdev_region(dev_t from, unsigned count)
此函数有两个参数:
from:要释放的设备号。
count: 表示从 from 开始,要释放的设备号数量。

[linux]驱动模块的加载与卸载,字符串设备的注册与注销

/* 驱动入口函数 */
static int __init xxx_init(void)
{
/* 入口函数具体内容 */
return 0;
}

static void __exit xxx_exit(void)
{
/* 出口函数具体内容 */
}

module_init(xxx_init);

module_exit(xxx_exit);

加载
modprobe *.ko
卸载
rmmod *.ko

注册

static inline int register_chrdev(unsigned int major, const char *name,const struct file_operations *fops)

注销
static inline void unregister_chrdev(unsigned int major, const char *name)

[linux]根文件系统挂载

服务器地址为 192.168.0.105 目录为/home/yue/rootfs
开发板地址为 192.168.0.200

setenv bootargs ‘console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.0.105:/home/yue/rootfs,proto=tcp rw ip=192.168.0.200:192.168.0.105:192.168.0.1:255.255.255.0::eth0:off’
saveenv

[linux]服务器可执行,vscode不行

arm-linux-gnueabihf-gcc -v
例如以上命令,在服务器上可以显示版本,但在vscode上显示未安装,检查服务器上profile也对
1.打开powershell,用管理员权限打开
2.输入get-executionpolicy,显示Restricted
3.输入set-executionpolicy -executionpolicy unrestricted 提示后输入a
4.再次输入get-executionpolicy 显示Unrestricted
5.重启vscode

[Linux]烧录文件组成

I.MX6U 的最终可烧写文件组成如下:
①、 Image vector table,简称 IVT, IVT 里面包含了一系列的地址信息,这些地址信息在
ROM 中按照固定的地址存放着。
②、 Boot data,启动数据,包含了镜像要拷贝到哪个地址,拷贝的大小是多少等等。
③、 Device configuration data,简称 DCD,设备配置信息,重点是 DDR3 的初始化配置。
④、用户代码可执行文件,比如 led.bin。
可以看出最终烧写到 I.MX6U 中的程序其组成为: IVT+Boot data+DCD+.bin。所以第八章
中的 imxdownload 所生成的 load.imx 就是在 led.bin 前面加上 IVT+Boot data+DCD。内部 Boot
ROM 会将 load.imx 拷贝到 DDR 中,用户代码是要一定要从 0X87800000 这个地方开始的,因
为链接地址为 0X87800000, load.imx 在用户代码前面又有 3KByte 的 IVT+Boot Data+DCD 数
据,下面会讲为什么是 3KByte,因此 load.imx 在 DDR 中的起始地址就是 0X87800000-
3072=0X877FF400

[linux]strerror perror

int main(void)
{
int fd;
fd = open(“./test_file”,O_RDONLY);
if (-1==fd)
{
printf(“Error:%s\n”,strerror(errno));
//perror(“open error”);
return -1;
}
close(fd);
return 0;
}

Error:No such file or directory
open error:NO such file or directory