kctime

    1. 基于LKS32MC061C6T8的多功能电机驱动控制器原理 42/26027 电机驱动控制(Motor Control) 2022-03-24
      newdrive 发表于 2020-4-29 10:12 有,加你了
      麻烦加一下QQ:530465617 咨询电机控制器方案
    2. 谢谢楼主分享
    3. 关于HELPER2416助学计划心得评奖的投票 23/21208 嵌入式系统 2014-09-24
      支持。。这一次没办法。参加TI杯和数学建模去了。没时间弄arm了
    4. Helper2416-38——八月份Helper2416学习总结帖 3/4223 嵌入式系统 2014-09-01
      yuanlai2010 发表于 2014-9-1 22:50 得多谢BOSS提供这样平台,让大家可以好好的学习,现在还提供实习单位,实在是太棒了
      来哥就找到实习单位了?   算了。。我还是去比赛吧
    5. 关于HELPER2416助学计划(延期) 12/6464 嵌入式系统 2014-09-01
      15号我就GG了。。。刚刚比完赛。。。
    6. 终于把gcc环境搭起来了 4/4101 嵌入式系统 2014-08-13
      恭喜恭喜
    7. PATH里有了但就是找不到。。。。。。 12/4460 嵌入式系统 2014-08-10
      yuanlai2010 发表于 2014-8-9 23:13 这个应该是你的ubuntu是64位的……还要装个什么库才能使用这个32位的编译器……具体怎么搞我不记得了……最 ...
      如果是缺少依赖会提示具体依赖的。他这个情况是提示找不到目录
    8. PATH里有了但就是找不到。。。。。。 12/4460 嵌入式系统 2014-08-10
      本帖最后由 kctime 于 2014-8-10 00:09 编辑 不需要用ccache目录下的吧,,而且你修改的PATH有问题。。 给你看看我的直接用bin目录下的 [ljh@localhost bin]$ pwd /home/ljh/bin/arm-jyxtec-linux-gnueabi/bin [ljh@localhost bin]$ export PATH=$PATH:/home/ljh/bin/arm-jyxtec-linux-gnueabi/bin [ljh@localhost bin]$ arm-linux-gcc arm-linux-gcc: no input files [ljh@localhost bin]$ $PATH bash: /usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/ljh/.local/bin:/home/ljh/bin:/home/ljh/bin/arm-jyxtec-linux-gnueabi/bin: 没有那个文件或目录 [ljh@localhost bin]$ 复制代码
    9. helper2416_静态库动态库_编译方法 5/3846 嵌入式系统 2014-08-09
      :pleased:在这里能找到好多用linux或者做linux开发的人哈
    10. 嵌入式LINUX学习分享————ADC 12/4967 嵌入式系统 2014-08-09
      yuanlai2010 发表于 2014-8-9 21:28 把文字部分直接拷贝到编辑栏中去,然后再把代码和图片插入到你想要的地方。代码不要直接复制进编辑栏,编 ...
      排版好麻烦。。。。。睡觉去。。
    11. 嵌入式LINUX学习分享————ADC 12/4967 嵌入式系统 2014-08-09
      yuanlai2010 发表于 2014-8-9 20:44 感谢廖大神的恩惠,这个必须要顶,这个东西正是我所需要的,赶紧回学校带我︿( ̄︶ ̄)︽( ̄︶ ̄)︿飞.飞.飞 ...
      没地方住好么。。帮我排版。。。。我发2楼去
    12. 嵌入式LINUX学习分享————ADC 12/4967 嵌入式系统 2014-08-09
      spacexplorer 发表于 2014-8-9 20:45 J14间距是2.0的,标准杜邦线可能不行,得用2.0的。。。
      还是自己压排线吧。。。淘宝有头哈
    13. 关于HELPER2416学习 8/3653 嵌入式系统 2014-08-09
      spacexplorer 发表于 2014-8-9 19:44 支持分享精神,不支持从流水线上逃走哈!呵呵
      :Sad:主要不是流水,,是广东的天气,,太热了。。。。一天湿身N次
    14. 嵌入式LINUX学习分享————ADC 12/4967 嵌入式系统 2014-08-09
      spacexplorer 发表于 2014-8-9 19:47 这个事情大概是我失误了!
      boss 那个J14的间距是多少阿,,
    15. 嵌入式LINUX学习分享————ADC 12/4967 嵌入式系统 2014-08-09
      spacexplorer 发表于 2014-8-9 19:41 写得很不错哈,其实,HELPER2416上的LINUX驱动都有实现,只是文档还没有跟上,学习LINUX就像学楼主这种精神 ...
      源代码里有个helper2416.。。的config文件。那里面木有设置PWM。。。当初找了好久的说。。
    16. 嵌入式LINUX学习分享————ADC 12/4967 嵌入式系统 2014-08-09
      spacexplorer 发表于 2014-8-9 19:41 写得很不错哈,其实,HELPER2416上的LINUX驱动都有实现,只是文档还没有跟上,学习LINUX就像学楼主这种精神 ...
      :):)谢谢boss鼓励哈,,,
    17. 来哥大神,,求带走。。
    18. 嵌入式LINUX学习分享————ADC 12/4967 嵌入式系统 2014-08-09
      本帖最后由 kctime 于 2014-8-9 21:53 编辑                         刚刚才流水线上逃回家,在实习的日子里没有时间学习开发板,回家的几天大概了解了以下开发板,加上以前的基础,弄了个ADC的程序和大家分享。 平台 fedora20 + helper2416 根据开发板手册上写的,从PC端传输文件到目标板上的几种方法里随意选一种,这里选用linux下的minicom等同于win下的超级终端 首先连接好设备 然后把arm-linux-gcc加入环境变量。exportPATH = $PATH:xxx/xxx/xxx/ [ljh@localhost code]$ arm-linux-gcc arm-linux-gcc: no input files 复制代码在终端建立三个标签,第一个开minicom,第二个用来编写,编译代码,第三个来查找文件 在minicom下查找adc设备 如上图 [root@jyxtec /dev]# ls -l | grep adc crw-rw----    1 root     root       10,  59 Jan  1  2000 adc 复制代码C是字符设备,  crw-rw---- 可以读写,不能执行, 在dev目录下找到adc设备 说明已经有了驱动了。。去找驱动把,, 一般是通过 makefile config 文件和grep指令查找 看看.config文件下的adc选项 CONFIG_S3C_ADC=y复制代码在源码主目录下搜索该项 [ljh@localhost s3c-linux.jyx]$ grep -rn "CONFIG_S3C_ADC"复制代码 复制代码arch/arm/plat-samsung/Makefile:25:obj-$(CONFIG_S3C_ADC) += adc.o复制代码进入这个makefile的目录找到一个adc.c文件                         然后我看了半天,不对, 原来在.config文件下还有一个CONFIG_HELPER2416_ADC=y复制代码 重新搜索咯drivers/char/Makefile:68:obj-$(CONFIG_HELPER2416_ADC)    += helper2416_adcdev.o复制代码这回对了定位到drivers/char/。去这个目录下找到一个helper2416_adcdev.c文件,,然后看看是不是设备驱动。 在这个C文件80多行的地方 找到如下结构体static struct file_operations helper2416adcdev_fops = {     .owner   =   THIS_MODULE,     .open    =   s3c24xx_adcdev_open,     .release =   s3c24xx_adcdev_close,     .read    =   s3c24xx_adcdev_read,     .unlocked_ioctl = helper2416_adc_ioctl, }; 复制代码 主要看 s3c24xx_adcdev_read helper2416_adc_ioctl 这两个函数就好了 static long helper2416_adc_ioctl(struct file *file, unsigned int cmd, unsigned long arg) {     int ret = 0;     int err = 0;     int ioarg = 0;     if (_IOC_TYPE(cmd) != ADCDEV_IOC_MAGIC)         return -EINVAL;     if (_IOC_NR(cmd) > ADCDEV_IOC_MAXNR)         return -EINVAL;     if (_IOC_DIR(cmd) & _IOC_READ)         err = !access_ok(VERIFY_WRITE, (void *)arg, _IOC_SIZE(cmd));     else if (_IOC_DIR(cmd) & _IOC_WRITE)         err = !access_ok(VERIFY_READ, (void *)arg, _IOC_SIZE(cmd));     if (err)         return -EFAULT;     switch(cmd) {     case ADCDEV_IOCSETCHANNEL:         ret = __get_user(ioarg, (int *)arg);              if (ioarg > 9)             return -EINVAL;               printk("Set ADC Channel number is  %d\n",(int)ioarg);         helper2416adc.channel =  ioarg;         break;        default:           return -EINVAL;           }     return ret; } 复制代码 这个函数结合开始找到的adc.c一起看,可以知道这货是选择adc通道的,就是说可以用ioctl去选择adc通道。 这里,参数要传址哦         ret = __get_user(ioarg, (int *)arg);              if (ioarg > 9)             return -EINVAL;               printk("Set ADC Channel number is  %d\n",(int)ioarg);         helper2416adc.channel =  ioarg;         break;   复制代码 关于一些常量的定义在helper2416_adcdev.h 里 #define ADCDEV_IOC_MAGIC 'S' #define ADCDEV_IOCSETCHANNEL _IOW(ADCDEV_IOC_MAGIC, 0x0c, int) #define ADCDEV_IOC_MAXNR 0x10复制代码这几个等会要 copy 到我们的应用代码里 static int s3c24xx_adcdev_read(struct file *filp, char __user *buff, size_t count, loff_t *offp) { unsigned long err; int adc_value; adc_value = s3c_adc_read(helper2416adc.padc_client, helper2416adc.channel); err = copy_to_user(buff, &adc_value, sizeof(adc_value)); return sizeof(adc_value); } 复制代码这个 read 函数里调用的东西在adc.c文件里 int s3c_adc_read(struct s3c_adc_client *client, unsigned int ch) {         DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wake);         int ret;         client->convert_cb = s3c_convert_done;         client->wait = &wake;         client->result = -1;         ret = s3c_adc_start(client, ch, 1);         if (ret < 0)                 goto err;         ret = wait_event_timeout(wake, client->result >= 0, HZ / 2);         if (client->result < 0) {                 ret = -ETIMEDOUT;                 goto err;         }         client->convert_cb = NULL;         return client->result; err:         return ret; } EXPORT_SYMBOL_GPL(s3c_adc_read);复制代码最后一个宏表示可以被其他的模块使用,,就说明了这货不是要找的驱动文件 再加上这个文件里面没有定义 file_operations 结构体,,所以果断 ctrl+W 了。。 接下来来写 ADC 的代码, 主要就是 打开文件 -->> 选择通道 --> 读取 ADC 的值 --> 要么继续读取,要么退出。。。。 写一个一次的先试试。
      //包含头文件 #include #include #include #include #include #include #include #include //定义常量和符号 #define ADCDEV_IOC_MAGIC 'S' #define ADCDEV_IOCSETCHANNEL _IOW(ADCDEV_IOC_MAGIC, 0x0c, int) #define ADCDEV_IOC_MAXNR 0x10 //定义设备文件路径 #define ADC_PATH "/dev/adc" int main() {         int adc_dev;         int ret;         int data;       int i=0;         if((adc_dev=open(ADC_PATH,O_RDWR))
    19. 关于HELPER2416学习 8/3653 嵌入式系统 2014-08-09
      spacexplorer 发表于 2014-8-9 16:00 GPIO驱动其实已经有了,在有驱动的情况下,控制GPIO就非常简单,可以参考一下这篇文章:http://blog.csdn ...
      boss  ,我才从流水逃回来,以前的分享都没写呢,,在家里弄了几天,发个ADC的可以把
    20. 关于HELPER2416学习 8/3653 嵌入式系统 2014-08-09
      yuanlai2010 发表于 2014-8-9 15:24 BOSS请问,J14的IO口有现成的驱动吗?存放在哪个位置呢?还是要自己去写?
      驱动有了。。在哪里我就不知道了。。在源代码里,,固件的话是GPIOCHIPXXX,自己grep以下就有了

最近访客

< 1/1 >

统计信息

已有50人来访过

  • 芯积分:--
  • 好友:1
  • 主题:3
  • 回复:40

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言