首页
📁归档
⏳时光机
📫留言
🚩友链
💰资助名单
推荐
🎧音乐
🏜️ 壁纸
❤ 捐助
Search
1
【NPN/PNP三极管】放大电路饱和失真和截止失真的区别
14,842 阅读
2
论文写作中如何把word里面所有数字和字母替换为新罗马字体
8,235 阅读
3
【高数】形心计算公式讲解大全
7,485 阅读
4
【1】基于STM32CubeMX-STM32GPIO端口开发
6,049 阅读
5
【概论】一阶矩、二阶矩原点矩,中心矩区别与概念
6,040 阅读
🪶微语&随笔
励志美文
我的随笔
写作办公
📡电子&通信
嵌入式&系统
通信&信息处理
编程&脚本笔记
⌨️IC&系统
FPGA&ASIC
VLSI&IC验证
EDA&虚拟机
💻电子&计算机
IP&SOC设计
机器学习
软硬件算法
登录
嵌入式&系统(共66篇)
找到
66
篇与
嵌入式&系统
相关的结果
- 第 5 页
2021-05-30
51单片机-汇编系列讲解-最强攻略
视频讲解 或者哔哩哔哩观看 https://www.bilibili.com/video/BV1fv411G7VU/ 例1 已知程序执行前有A=01H,SP=42H,(41H)=FFH,(42H)=FFH。下列程序执行后: POP DPH POP DPL MOV DPTR,#3000H RL A MOV B,A MOVC A,@A+DPTR PUSH ACC MOV A,B INC A MOVC A,@A+DPTR PUSH ACC RET ORG 3000H DB 10H,80H,30H,50H,30H,50H解答: POP DPH ; (42H)赋值给DPH,这个关系一直存在,知道程序结束。 SP= 41 H, POP DPL ;(41H)赋值给DPL,SP=40H MOV DPTR,#3000H ;DPTR=#3000H RL A ;A=02H ;16进制左移一位,先化为二进制过程更明显。 MOV B,A ;B=02H MOVC A,@A+DPTR ;查表得A=30H , 是从00H开始 查表的。 PUSH ACC ;将A 中的值赋值给,上一个空出位41H,(41H)=DPL 。 因为SP指针指向的栈 ,是有值的, 只有比他高的地址是空的。如指向(01H),那么(01H)中有值,(02H),(03H)….. 中没值。SP=41H,(41H)=#30H=DHL MOV A,B ;A=02H INC A ;A=03H MOVC A,@A+DPTR ;查表A=50H PUSH ACC ;将A 的值赋给再上一个空位,(42H)=50H=DPH 。 RET ;子程序结束!RET指令弹出断点位置即SP最近两字节数据SP=SP-2=40H,PC=5030(大端对齐) ORG 3000H DB 10H,80H,30H,50H,30H,50H例2 P1.7=ACC.0×(B.0+P2.1)+(P3.2)非 MOV C, B.0 ORL C, P2.1 ANL C, ACC.0 ORL C, /P3.2 MOV P1.7, C END例3 一台主机与三台从机通信 隐藏内容,请前往内页查看详情 例4 将片外数据存储器4004H、5005H、6006H单元的内容交换(16位交换) POP DPH POP DPL mov dptr,#4004h clr a movx a,@dptr push acc mov dptr,#5005h clr a movx a,@dptr mov b,a pop acc movx @dptr,a mov dptr,#4004h mov a,b movx @dptr,a mov dptr,#5005h clr a movx a,@dptr push acc mov dptr,#6006h clr a movx a,@dptr mov b,a pop acc movx @dptr,a mov dptr,#5005h mov a,b movx @dptr,a例5 51单片机DAC0832各种波形程序 程序: 隐藏内容,请前往内页查看详情 请勿标注电阻大小 图片 例6 如果考12MHZ单片机机器周期,切记不是1/12M,而是要先12分频,这个51单片机特点,频率是12M/12=1M,周期1/1M=1us
嵌入式&系统
刘航宇
4年前
47
3,164
14
2021-05-12
嵌入式第二次测试解答
具体操作流程参考上篇文章: 嵌入式实战—应用open调用内核open,应用close调用内核close通信程序 hello.c需要修改为: #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/cdev.h> #include <linux/kdev_t.h> #include <linux/fs.h> //file_operations MODULE_LICENSE ("GPL"); int i = 10; struct file_operations ops; struct cdev mycdev; int major = 254; int minor = 5; dev_t dev; int j= 0; int k= 0; int open(struct inode *pinode,struct file *pfile) { j++; printk(KERN_INFO "liuhangyu myopen run j= %d\n",j); return 0; } int close(struct inode *pinode,struct file *pfile) { k++; printk(KERN_INFO "liuhangyu myclose run k= %d\n",k); return 0; } void myuart_init(void) { int ret; mycdev.owner=THIS_MODULE; dev = MKDEV(major,minor); ret = register_chrdev_region(dev,5,"myuart"); if(ret==-1) { printk(KERN_INFO "dev cant't use\n"); ret = alloc_chrdev_region(&dev,5,1,"myuart"); //automatic allocation dev if(ret==0) { printk(KERN_INFO "alloc : major= %d\n",MAJOR(dev)); } else { printk(KERN_INFO "alloc error\n"); return ; } } else { printk(KERN_INFO "dev can use\n"); } ops.owner=THIS_MODULE; ops.open=open; ops.release=close; cdev_init(&mycdev,&ops); cdev_add(&mycdev,dev,5); //mycdev send dev,equipment 1 return ; } static int __init hello_init (void) { i ++; myuart_init(); //init printk (KERN_INFO "driver init,i = %d\n",i); return 0; } static void __exit hello_exit (void) { i ++; printk (KERN_INFO "driver exit,i = %d\n",i); unregister_chrdev_region(dev,5); cdev_del(&mycdev); } module_init (hello_init); module_exit (hello_exit);app.c需要修改为 #include "stdio.h" #include "fcntl.h" #include "unistd.h" #include "stdlib.h" int main() { int fd; int q = 0; while(1) { fd = open("./myuart",O_RDWR,0777) ; if(fd==-1) { printf("open error\n"); return -1; } q ++; printf("liuhangyu open run q = %d\n",q); sleep (3); close(fd); q ++; printf("liuhangyu close run q = %d\n",q); sleep (3); } return 0; }直接在此输入下面这个命令,才能./app mknod ./myuart c 254 5
嵌入式&系统
# 嵌入式
刘航宇
4年前
3
321
5
2021-05-09
嵌入式实战—应用open调用内核open,应用close调用内核close通信程序
应用open调用内核open,应用close调用内核close通信程序 1.在TM命令窗口中,不要进入sudo -s,先创建一个普通目录 mkdir liu 2.下载已经配置好的Makefile文件(在虚拟机liunx系统浏览器输入tiie.cn网址,找到本文,下载Makefile文件),将这个文件移动到创建的liu文件夹内,如果下载后名称不是Makefile,重命名下载的文件为Makefile SICARM云盘-Makefile文件 下载地址:http://pan-yz.chaoxing.com/download/downloadfile?fleid=609396534180687872&puid=84519098 提取码: ::(你懂的) ::(你懂的) 不是我吹,我的云盘下载速度吊打某度云,免费不限速 3.进入root模式 ,创建驱动程序: hello.c程序, vim hello.c 注意不要改名字,否则可能会报错,这个makefile配置的是hello.c不能改名字的!!!非高手怕报错,将下面所有东西,全部放在liu文件夹内 提示:下面程序直接在liunx浏览器里面复制即可,不用敲,很多同学容易敲错,报错找不到问题所在。 程序中liuhangyu可改成你的名字 #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/cdev.h> #include <linux/kdev_t.h> #include <linux/fs.h> //file_operations MODULE_LICENSE ("GPL"); int i = 10; struct file_operations ops; struct cdev mycdev; int major = 100; int minor = 1; dev_t dev; int j= 0; int k= 0; int myopen(struct inode *pinode,struct file *pfile) { j++; printk(KERN_INFO "liuhangyu myopen run j= %d\n",j); return 0; } int myclose(struct inode *pinode,struct file *pfile) { k++; printk(KERN_INFO "liuhangyu myclose run k= %d\n",k); return 0; } void liuhangyu_init(void) { int ret; mycdev.owner=THIS_MODULE; dev = MKDEV(major,minor); ret = register_chrdev_region(dev,1,"liuhangyu"); if(ret==-1) { printk(KERN_INFO "dev cant't use\n"); ret = alloc_chrdev_region(&dev,1,1,"liuhangyu"); //automatic allocation dev if(ret==0) { printk(KERN_INFO "alloc : major= %d\n",MAJOR(dev)); } else { printk(KERN_INFO "alloc error\n"); return ; } } else { printk(KERN_INFO "dev can use\n"); } ops.owner=THIS_MODULE; ops.open=myopen; ops.release=myclose; cdev_init(&mycdev,&ops); cdev_add(&mycdev,dev,1); //mycdev send dev,equipment 1 return ; } static int __init hello_init (void) { i ++; liuhangyu_init(); //init printk (KERN_INFO "driver init,i = %d\n",i); return 0; } static void __exit hello_exit (void) { i ++; printk (KERN_INFO "driver exit,i = %d\n",i); unregister_chrdev_region(dev,1); cdev_del(&mycdev); } module_init (hello_init); module_exit (hello_exit); 4.保存下一步分别输入 make 回车 insmod hello.ko回车 5.完成后打开第二TM窗口,在同目录下,创建同理app.c程序,这个是应用层程序。 #include "stdio.h" #include "fcntl.h" #include "unistd.h" #include "stdlib.h" int main() { int fd; int q = 0; while(1) { fd = open("./liuhangyu",O_RDWR,0777) ; if(fd==-1) { printf("open error\n"); return -1; } q ++; printf("liuhangyu open run q = %d\n",q); sleep (8); close(fd); q ++; printf("liuhangyu close run q = %d\n",q); sleep (8); } return 0; }6.输入 mknod ./liuhangyu c 100 1 7.输入 gcc -o app app.c 8.输入./app观察2个窗口现象,每隔几秒给第一个窗口输入dmesg可以看到通信是成功的 图片 图片 以上则完成全部测试,下面讲解退出 9.输入键盘敲Ctrl+C强制退出app程序 10 分别输入rmmod hello.ko回车,make clean回车 好下课!
嵌入式&系统
刘航宇
4年前
10
672
11
2021-04-10
进程间有名管道通信,并可靠退出
使用管道通信实现两个进程的单机双向通信,并保证可靠退出。免get函数,利用kill结束所有进程办法,小刘原创: 管道程序: 1.随意命名比如 vim g.c复制下面程序,在Linux系统浏览器可以输入本站网址sciarm.com,可以直接复制,不用敲代码。 2.然后 gcc g.c 3../a.out #include "stdio.h" int main() { int ret; ret = mkfifo("./first",0777); if(ret == -1) { printf("create first error\n"); return -1; } ret = mkfifo("./second",0777); if(ret == -1) { printf("create second error\n"); return -2; } return 0; }A端程序 1.同理创建 vim A.c 复制下面程序 2.gcc A.c -o A 3.然后 ./A #include "stdio.h" #include "fcntl.h" #include "string.h" int main() { int pid; int fd; int i; char buf[32] = {0}; pid = fork(); if(pid > 0) // write first { fd = open("./first",O_WRONLY,0777); if(fd == -1) { printf("open first error\n"); return -1; } while(1) { printf("please input send data\n"); scanf("%s",buf); write(fd,buf,strlen(buf)); if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } for(i = 0 ;i < 32 ;i ++) { buf[i] = 0; } } close(fd); } if(pid == 0) // read second { fd = open("./second",O_RDONLY,0777); if(fd == -1) { printf("open error\n"); return -2; } while(1) { read(fd,buf,32) ; if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } printf("recv from B %s\n",buf); for(i = 0 ;i < 32; i ++) { buf[i] = 0; } } close(fd); } return 0; }B端程序 打开另一个TM命令窗口,也要root模式下 1.同理创建 vim B.c 复制下面程序 2.gcc B.c -o B 3.然后 ./B #include "stdio.h" #include "fcntl.h" #include "string.h" int main() { int pid; int fd; int i; char buf[32] = {0}; pid = fork(); if(pid > 0) // write first { fd = open("./first",O_RDONLY,0777); if(fd == -1) { printf("open first error\n"); return -1; } while(1) { read(fd,buf,32); if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } printf("recv from A %s\n",buf); for(i = 0 ;i < 32 ;i ++) { buf[i] = 0; } } close(fd); } if(pid == 0) // read second { fd = open("./second",O_WRONLY,0777); if(fd == -1) { printf("open error\n"); return -2; } while(1) { printf("please input send data\n"); scanf("%s",buf); write(fd,buf,strlen(buf)) ; if(buf[0] == 'q') { kill(pid,9); waitpid(pid,NULL,0); break; } for(i = 0 ;i < 32; i ++) { buf[i] = 0; } } close(fd); } return 0; }打开第三个窗口进入超管模式输入: ps -axj 可以看到4个进程 图片 A端:随便输入一些字符,B就能接收到,输入q,两者4个进程可以全面杀掉 图片 B端: 图片 再次输入: ps -axj 全部杀掉进程图: 图片
嵌入式&系统
# 嵌入式
刘航宇
4年前
3
563
12
2021-03-21
通信滤除$字符分段保留重要信息代码
通信中滤除$字符分段保留重要信息代码 实现效果 图片 初级代码main实现 #include "stdio.h" int main() { int i, j; char temp[16][32] = { 0 }; char str[128] = { 0 }; printf("please input a string\n"); scanf("%s", str); printf("%s\n", str); char* p = &str[0]; i = 0; j = 0; while (1) { if (*p == 0) { break; } if (*p != '$') { temp[i][j] = *p; j++; } else { i++; j = 0; } p++; } for (j = 0; j <= i; j++) { printf("%s\t", temp[j]); } return 0; } 进阶调用函数 #include "stdio.h" void fun(char *p){ int i,j; char temp[16][32]={0}; i=0; j=0; while(1) { if(*p==0) {break;} if(*p!='$') { temp[i][j]=*p; j++; } else {i++; j=0; } p++; } for(j=0;j<=i;j++) { printf("%s\t",temp[j]); } return; } int main(){ char str[128]={0}; printf("please input string\n"); scanf("%s",str); fun(str); printf("\n"); return 0; }再次进阶 #include "stdio.h" int len; char **fun(char *p){ int i,j; static char *m[16]; static char temp[16][32]={0}; i=0; j=0; while(1) { if(*p==0) {break;} if(*p!='$') { temp[i][j]=*p; j++; } else {i++; j=0; } p++; } for(j=0;j<=i;j++) { printf("%s\t",temp[j]); } len=i+1; for(i=0;i<16;i++) { m[i]=&temp[i][0]; } return m; //&m[0] } int main(){ char **k; int i; char str[128]={0}; printf("please input string\n"); scanf("%s",str); k=fun(str); for(i=0;i<len;i++){ printf("%s\t",*k); } return 0; }
嵌入式&系统
编程&脚本笔记
刘航宇
4年前
1
277
3
2021-03-17
T分布及T分布表
下表列出了自由度为1-30以及80、100、120等t-分布的单侧和双侧区间值。例如,当样本数量n=5时,则自由度v=4,我们就可以查找表中以4开头的行。该行第5列值为2.132,对应的单侧值为95%(双侧值为90%)。这也就是说,T小于2.132的概率为95%(即单侧),记为Pr(−∞ < T < 2.132) = 0.95;同时,T值介于-2.132和2.132之间的概率为90%(即双侧),记为Pr(−2.132 < T < 2.132) = 0.9。 这是根据分布的对称性计算得到的, Pr(T < −2.132) = 1 − Pr(T > −2.132) = 1 − 0.95 = 0.05, 因此, Pr(−2.132 < T < 2.132) = 1 − 2(0.05) = 0.9. 注意 关于表格的最后一行的值:自由度为无限大(n=120)的t-分布和正态分布等价。 默认图片
嵌入式&系统
我的随笔
刘航宇
4年前
0
1,443
2
2021-03-14
liunx系统创建并运行实战一个c程序及常用指令指导
{mtitle}liunx系统运行实战一个c程序{/mtitle} 学习liunx系统有利于嵌入式、云服务器等学习。 下面我们实战创建并运行一个三角图形c程序 首先 su rooot 进入超级管理员模式 如果你没有超级管理员账号,想搞一个可以看本站嵌入式其他帖子创建永久超级管理员账号办法,或者按课本上代码临时进入root模式 然后输入 ls 指令查看目录 然后输入 cd 你选的目录名 创建c程序 vim test.c 键盘“a”键可以直接进入编辑模式 输入代码例如: #include <stdio.h> int main() { int i,j,n; printf("input ranks n\n"); scanf("%d",&n); for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=0;j<=i;j++) printf("*"); printf("\n"); } return 0; }或者更换 for(i=0;i<n;i++) { for(j=0;j<n-i-1;j++) printf(" "); for(j=n-i-1;j<n;j++) printf("*"); printf("\n"); }输入完C代码后,记得“ESC”键切换,输入“:wq”保存退出 然后gcc test.c 打完gcc test.c编译完C源文件。然后就可以看见a.out的文件。一般linux系统就默认为a.out为编译完的文件。现在运行a.out文件。在a.out文件的目录下打开终端并输入 ./a.out 就是运行文件了。 示例图解: 图片 对于回文数可以参考下面代码,我们不妨先取倒序,将本数先输出,再输出倒序数则生成回文数。要让计算的结果倒序输出.现总结一下思路: 1.如果要把一个数倒序输出,即对10求模,可以得到尾数; 2.然后将这个数除以10;这样个位就被舍去;然后如此循环即可 3.直到求模结果为0;证明这个数已经求到个位; #include <stdio.h> int main() { int h; printf("Enter the number\n"); scanf("%d",&h); if(h==0) { printf("%d",h); } printf("%d",h); while(h>0) { printf("%d",h%10); h=h/10; } return 0; } 参考图例: 回文数图片 {mtitle}Linux基本命令{/mtitle} uname -a 查看内核版本 ls -al 显示所有文件的属性 pwd 显示当前路径 cd - 返回上一次目录 cd ~ 返回主目录 date s 设置时间、日期 cal 显示日历 cal 2006 bc 计算器具 man & info 帮助手册 locale 显示当前字体 locale -a 所有可用字体 /etc/sysconfig/i18n设置文件 LANG=en 使用英文字体 sync 将数据同步写入硬盘 shutdonw -h now & half & poweroff 关机 reboot 重启 startx & init 5 进入图形介面 /work & ?work 向上、下查找文档内容 chgrp 改变档案群组 chgrp testing install.log chown 改变所属人 chown root:root install.log chmod 改变属性 chmod 777 install.log read=4 write=2 execute=1 cp 复制 cp filename rm 删除文件 rm -rf filename 强制删除文件 rmdir 删除文件夹 mv 移动 mv 123.txt 222.txt 重命名 mkdir 创建文件夹 touch 创建文件 更新当前时间 cat 由第一行开始显示 cat |more 分页 nl 在内容前加行号 more & less 一面一面翻动 head -n filename 显示第N行内容 tail -n filename 显示后N行内容 od 显示非纯文档 df -h 显示分区空间 du 显示目录或文件的大小 fdisk 分区设置 fdisk -l /dev/hda 显示硬盘分区状态 mkfs 建立各种文件系统 mkfs -t ext3 /dev/ram15 fsck 检查和修复LINUX档案 ln 硬链接 ln -s 软件链接 whereis 查找命令 locate 查找 find 查找 find / -name "." which 查看工具 whoami 显示当前用户 gcc -v 查看GCC版本 chattr +i filename 禁止删除 chattr -i filename 取消禁止 lsattr 显示隐藏档属性 updatedb 更新资料库 mke2fs 格式化 mkfs -t ext3 dd if=/etc/passwd of=/tmp/passwd.bak 备份 mount 列出系统所有的分区 mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘 mount -t vfat /dev/fd0 /mnt/floppy 挂载软盘 mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2 挂载fat32分区 mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3 挂载ntfs分区 umount /mnt/hda3 缷载 ifconfig 显示或设置网络设备 service network restart 重启网卡 ifdown eth0 关闭网卡 ifup eth0 开启网卡 clear 清屏 history 历史记录 !55 执行第55个指令 stty 设置终端 stty -a fdisk /mbr 删除GRUB at 僅進行一次的工作排程 crontab 循環執行的例行性命令 [e]编辑,[l]显示,[r]删除任务 & 后台运行程序 tar -zxvf 123.tar.gz & --------->后台运行 jobs 观看后台暂停的程序 jobs -l fg 将后台程序调到前台 fg n ------>n是数字,可以指定进行那个程序 bg 让工作在后台运行 kill 结束进程 kill -9 PID [9]强制结束,[15]正常结束,[l]列出可用的kill信号 ps aux 查看后台程序 top 查看后台程序 top -d 2 每两秒更新一次 top -d 2 -p10604 观看某个PID top -b -n 2 > /tmp/top.txt ----->將 top 的資訊進行 2 次,然後將結果輸出到 /tmp/top.txt pstree 以树状图显示程序 [A]以 ASCII 來連接, [u]列出PID, [p]列出帐号 killall 要刪除某個服務 killall -9 httpd free 显示内存状态 free -m -------->以M为单位显示 uptime 显示目前系统开机时间 netstat 显示网络状态 netstat -tulnp------>找出目前系統上已在監聽的網路連線及其 PID dmesg 显示开机信息 demsg | more nice 设置优先权 nice -n -5 vi & ----->用 root 給一個 nice 植為 -5 ,用於執行 vi renice 调整已存在优先权 runlevel 显示目前的runlevel depmod 分析可载入模块的相依性 lsmod 显示已载入系统的模块 modinfo 显示kernel模块的信息 insmod 载入模块 modprobe 自动处理可载入模块 rmmod 删除模块 chkconfig 检查,设置系统的各种服务 chkconfig --list ----->列出各项服务状态 ntsysv 设置系统的各种服务 cpio 备份文件 压缩命令: *.Z compress 程式壓縮的檔案; *.bz2 bzip2 程式壓縮的檔案; *.gz gzip 程式壓縮的檔案; *.tar tar 程式打包的資料,並沒有壓縮過; *.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮 compress filename 压缩文件 加[-d]解压 uncompress gzip filename 压缩 加[-d]解压 zcat 123.gz 查看压缩文件内容 bzip2 -z filename 压缩 加[-d]解压 bzcat filename.bz2 查看压缩文件内容 tar -cvf /home/123.tar /etc 打包,不压缩 tar -xvf 123.tar 解开包 tar -zxvf /home/123.tar.gz 以gzip解压 tar -jxvf /home/123.tar.bz2 以bzip2解压 tar -ztvf /tmp/etc.tar.gz 查看tar内容 cpio -covB > [file|device] 份份 cpio -icduv < [file|device] 还原 深圳-广州-郑州-长沙嵌入式系统实训,凡通过本帖添加咨询报名学习可免费赠送学习现金卷及学习资料一份。详情联系郭老师QQ754634522 vi一般用法 一般模式 编辑模式 指令模式 h 左 a,i,r,o,A,I,R,O :w 保存 j 下 进入编辑模式 :w! 强制保存 k 上 dd 删除光标当前行 :q! 不保存离开 l 右 ndd 删除n行 :wq! 保存后离开 0 移动到行首 yy 复制当前行 :e! 还原原始档 $ 移动到行尾 nyy 复制n行 :w filename 另存为 H 屏幕最上 p,P 粘贴 :set nu 设置行号 M 屏幕中央 u 撤消 :set nonu 取消行号 L 屏幕最下 [Ctrl]+r 重做上一个动作 ZZ 保存离开 G 档案最后一行 [ctrl]+z 暂停退出 :set nohlsearch 永久地关闭高亮显示 /work 向下搜索 :sp 同时打开两个文档 ?work 向上搜索 [Ctrl]+w 两个文档设换 gg 移动到档案第一行 :nohlsearch 暂时关闭高亮显示 认识SHELL alias 显示当前所有的命令别名 alias lm="ls -al" 命令别名 unalias lm 取消命令别名 type 类似which exprot 设置或显示环境变量 exprot PATH="$PATH":/sbin 添加/sbin入PATH路径 echo $PATH 显示PATH路径 bash 进入子程序 name=yang 设定变量 unset name 取消变量 echo $name 显示变量的内容 myname="$name its me" & myname='$name its me' 单引号时$name失去变量内容
嵌入式&系统
# 嵌入式
刘航宇
4年前
2
356
2
2021-03-14
VM虚拟机开机蓝屏,无限重启等,解决方案
由于电脑硬件兼容性问题,在虚拟机的设置中将不需要的设备移除,尤其是打印机 全部移除,关机重启,再开就没问题了 图片 设置下方有,移除选项,点击对应栏目移除即可
嵌入式&系统
刘航宇
4年前
1
418
2
2021-03-11
使用虚拟机提示“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”
如果虚拟机的时候遇到过“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题,其实出现这种情况是bios中虚拟化VT-x没有关闭,具体怎么解决问题的呢?下面看操作 图片 弹窗的提示信息如下: 已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。 如果已在 BIOS/固件设置中禁用 Intel VT-x,或主机自更改此设置后从未重新启动,则 Intel VT-x 可能被禁用。 (1) 确认 BIOS/固件设置中启用了 Intel VT-x 并禁用了“可信执行”。 (2) 如果这两项 BIOS/固件设置有一项已更改,请重新启动主机。 (3) 如果您在安装 VMware Workstation 之后从未重新启动主机,请重新启动。 (4) 将主机的 BIOS/固件更新至最新版本。 解决方法 看上面的提示 也就很好解决了:直接修改BIOS设置即可。 以下以个人映泰H61主板为例: 1、关机,开机,在启动时,按Delete进入 BIOS 设置页面(不同主板进入BIOS快捷键不同,可以通过网络查询); 2、选择Advanced,再选择CPU Configuration并点击enter建进入该功能,在新功能中选择Intel (R) Virtualization Technology ,此时该选项应该是disabled(关闭)的; 图片 3、将disabled(关闭)改为 enabled(开启); 图片 4、保存设置,点击F10,保存后退出,重启即可。 图片 以上就是使用虚拟机提示“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的解决方法,大家可以试下。
嵌入式&系统
刘航宇
4年前
0
668
1
2021-03-10
linux无法进入超管模式root用户密码错误解决方法
一、问题的原因 问题:输入命令 su root ,输入密码怎么输入都不正确 原因:因为刚安装好的Linux系统是没有给root设置密码的 图片 二、解决方法 输入以下命令 sudo passwd root [sudo] password for sam(用户名): 输入当前登陆liunx用户名的密码 Enter new UNIX password: 输入新的密码并确认,此时的密码就是root新密码 Retype new UNIX password: 再次确认root新密码 弹出:passwd: password updated successfully(已成功更新密码) 图片 进入root权限 su root 切换到普通用户,如自己配置的用户名为sam su sam
嵌入式&系统
刘航宇
4年前
0
372
5
2021-03-10
超详细win系统虚拟机安装liunx系统方法
前言: Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。 如果初学,建议用VMWARE方式,或者CYGWIN,等熟练后再装双系统。 双系统的方式速度快,适合做研发。 同时虚拟机支持win下用linux系统,不必开关机等麻烦事项,缺点就是慢。 一、软件准备。 由于课本资源老旧,兼容性不佳,可能有的win10安装后无法打开,建议用我下面提供连接安装,或者联系我要u盘安装,免下载 安装有问题话可以联系我! 1、 VMware软件 下载地址1(迅雷)http://forspeed.onlinedown.net/down/vmware15.zip 百度云链接(提取码liu6)https://pan.baidu.com/s/1eJGST7AixIng4v7SoSN2aw 2、Linux系统 Ubuntu16.04版本下载链接(提取码:liu6): https://pan.baidu.com/s/1ZN5fDI7eWSIlRPqkyM38zQ Ubuntu18.04版本下载链接(提取码:liu6): https://pan.baidu.com/s/1-n5WIjuKbDD3NF9YX8-qKQ 二、VMware软件安装 !!!下面安装路径命名最好不要出现中文! 1、解压VMware压缩包得到下图所示文件: 图片 2、打开安装包 图片 3、建议更改安装位置到d盘,C盘大可以忽略 图片 更改后安装位置如下 图片 4、按照安装指示完成安装,安装过程中会重置网络,出现网络断开的现象,属于正常现象。 5、打开VMware,点击许可证!出现输入密钥界面,这时候就要用到密钥生成器了 图片 点击Generate键生成密匙,复制左侧密匙粘贴在VMware密匙界面里,回车确认即可破解软件 图片 秘钥复制后输入 图片 6、如果提示更新不要更新! 三、在VMware上安装linux系统 退出右键点击图标,以管理员权限运行。 1、打开VMware界面如下所示 图片 2、点击创建新的虚拟机 图片 选择自定义安装,点击下一步 3、继续选择下一步 图片 4、选择光盘映像文件,导入的文件为下载的Ubuntu18.04(或者Ubuntu16.04)Linux系统,然后点击下一步: 图片 5、输入你的信息,然后点击下一步,建议不要出现中文 图片 图片 6、输入你的虚拟机名称,按照惯例名称一般不要出现中文,并选择虚拟机部署的位置,然后点击下一部 图片 7、依据你电脑的情况选择分配给这台虚拟机的CPU,如果不清楚自己的电脑情况,建议选少一点,不然运行起来对主系统速度影响会很大。然后点击下一步 图片 8、调整你想要分配给虚拟机的内存,分配原则和上面一样,一般电脑总运行内存4G,调整完成后点击下一步。 图片 9、如无特殊情况,使用网络地址转换,然后点击下一步 图片 10、I/O控制器类型默认类型不用管,然后点击下一步 11、磁盘类型默认类型不用管,然后点击下一步 12、如无特殊情况,选择创建新的虚拟磁盘,然后点击下一步 图片 13、选择分配给磁盘的大小,分配原则与CPU、内存一样。选择将虚拟磁盘存储为一个文件,方便管理,然后点击下一步 图片 14、给磁盘文件命名,一般不要出现中文,然后点击下一步 图片 15、核对虚拟机的各种参数,然后点击完成,虚拟机即会自动安装完成 图片 16、第一次安装很慢,请耐心等待,安装完成后打开虚拟机如图所示,一般点击全屏以自适应屏幕大小 图片 开机无限重启蓝屏等问题 请点击跳转
嵌入式&系统
刘航宇
4年前
17
650
18
2021-02-26
基于虚拟现实技术远程教育系统
摘要: 由于传统的教学与网络课程均不能完美的实现与学生大量的教学互动环节,在日益增长的教学需求下,如听觉、视觉、触觉等身临其境的教学需求,虚拟现实技术备受瞩目。虚拟现实技术是一种良好的人机交互技术,利用计算机可以生成二维、三维、四维等虚拟空间,通常广泛应用的是三维空间,而虚拟物体可以按一定的规则去自主运动,使用者通过一定的输入方式可以虚拟互动,促使该物体做出相应的回应。本文提出一种学生在异地可以远程和教师进行身临其境交互的一种系统。 关键字: 虚拟现实技术; 云服务器; 远程教育; 人机交互;6人工智能; 第一章 引言 1.1. 系统开发背景 虚拟现实技术最早可以追溯到美国VPL公司,虚拟现实技术包括虚拟现实(VR)、增强现实(AR)和混合现实(MR)[1],该技术融入了AI、传感、网络、图形技术,使用者利用专用头盔、专用手套和人体接触传感设备,在网络环境控制下,可以让用户感知模拟的三维环境,并进行交互,使其在听觉、视觉、触觉均能有所反应。其特点包括:多感官感知性、信息交互性、体验沉浸性、虚拟想象性[2],在传统的教学不能完美的实现与学生大量的教学互动环节,日益增长的教学需求下,如听觉、视觉、触觉等身临其境的教学需求,因此虚拟现实技术用于远程教育系统的开发前景是十分光明的。 1.2. 国内外研究现状 在20世纪60年代虚拟现实技术开始兴起,美国是VR技术的发源地,有美国宇航局(NASA)、麻省理工学院(MIT)媒体实验室、华盛顿大学人机界面技术实验室(HIT Lab)等许多知名的研究机构。美国在虚拟现实领域的基础研究主要集中在感知、用户界面、后台软件和硬件四个方面。英国主要有四个从事VR技术研究的中心,包括Windustries公司、British Aerospace公司、Dimension International公司、Divison LTD公司等。日本主要致力于建立大规模VR知识库和人机接口方面的研究项目上,在VR游戏方面的研究也处于领先地位。我国从20世纪80年代起开始研究VR技术。虽然起步较晚,但近年来政府有关部门非常重视,制定了开展VR技术的研究计划,并将其列入国家重点研究项目。国内的一些科学家和重点院校也已积极投入了对这一领域的研究。是国内最早进行VR技术研究、最有权威的单位之一。它于2000年8月成立了虚拟现实新技术教育部重点实验室。西安交通大学信息工程研究所对虚拟现实中的关键技术——立体显示技术进行了研究,提出一种基于JPEG标准压缩编码新方案,获得了较高的压缩比、信噪比以及解压缩速度。 直到80年代虚拟现实才开始运用于教育领域,在20世纪90年代,美国最早把虚拟现实技术引入到高等与基础教育建设中。现在中国教育部教育管理信息中心、数字学习与教育公共服务部工程研究中心、百度教育共同编著的《2018中国互联网学习白皮书》指出“互联网+”教育持续发展,VR+教育、AR+教育等获得深入推进。虚拟现实在教育领域中的运用具备巨大的潜力和良好的发展前景,国家政府与各行各业对虚拟现实教育的发展现状与未来发展状况密切关注,已经开展了各项研究,因此设计一种基于虚拟现实技术远程教育系统是十分有必要的[3]。 第二章 系统开发的相关介绍和分析 2.1. 系统设计框图 本文提出一种基于虚拟现实技术远程教育系统设计方法,其中包括教师终端与学生终端,两个终端通过5G或4G网络可靠的TCP协议连接到一个云端中央处理器,通过计算和相应算法对数据进行处理。教师终端包括VR采集模块、数据反馈模块、教师识别模块;学生终端包括数据标注模块、VR显示模块、交互采集模块、学生识别模块如图1所示为系统整体设计框图[4]。 图片 2.2. 具体开发实施方式 云端服务器可以通过阿里云、腾讯云等购买,中央服务器系统要求基于Red Hat Linu系统CentOS 7.3以上。利用远程连接如Xshell登入最高权限ROOT用户,用于架设中央服务器。进一步,通过FTP将写好的C/C++程序通过FTP上传到中央服务器根目录,通过前面所述将云主机安装gcc和g++用于编译程序生成和执行文件,在root权限下,输入命令CD进入根目录,输入g++ suanfa.cpp编译成功后生成可执行文件,直接调用该文件,同时键入后台运行命令,使得该程序稳定运行,中央服务器就配置成功了,该服务器实现教师终端与学生终端之间数据TCP协议通信连接。教师终端用于接受教师终端内各个模块数据信息并处理;VR采集模块用于对教师教学内容进行全景拍摄,并形成交互反馈信息发送给学生终端。教师识别模块用于对教师身份识别并将所识别的结果发送给中央服务器,该模块依托于指纹识别方式进行识别。学生终端的载体则是VR头盔,用于接受学生终端内各个模块数据信息并处理,载体通过局域网wifi方式和学生终端服务器通信。其中学生识别模块也采用指纹识别方式,将识别结果反馈给中央服务器。VR显示模块用于对VR教学视频进行接受并显示;数据标注模块用于学生在VR教学视频观看。此外教师端需要利用移动式摄像头来捕捉画面,为了得到一个便于建模的全景图像,我们采用多个摄像头来采样图像,图像一系列处理后采用LOD模型生成算法建模。如图2。 图片
嵌入式&系统
刘航宇
4年前
0
366
1
上一页
1
...
4
5
6
下一页