当前位置: 首页 > news >正文

免费做简历网站有哪些fusionaccess免费服务器

免费做简历网站有哪些,fusionaccess免费服务器,网页制作网页,网站导航的交互怎么做嵌入式系统一般要求低功耗#xff0c;出于这个原因#xff0c;一般只把需要使用到的外设时钟源打开#xff0c;其他不需要使用到的模块#xff0c;则默认关闭它们。LCD 模块#xff0c;上电时候默认情况是关闭的#xff0c;所以#xff0c;要想使用 LCD 模块#xff0c… 嵌入式系统一般要求低功耗出于这个原因一般只把需要使用到的外设时钟源打开其他不需要使用到的模块则默认关闭它们。LCD 模块上电时候默认情况是关闭的所以要想使用 LCD 模块配置它寄存器必须先开启它时钟。如何知道哪个模块时钟源是打开的哪些模块时钟源是关闭的不同的芯片时钟设置一定不相同的所以实现代码是编写在和具体芯片相关的文件中Clock-exynos4.c (arch\arm\mach-exynos)内核使用 struct clk 结构描述一个外设模块的时钟信息struct clk { struct list_head list; struct module *owner; struct clk *parent; const char *name; const char *devname;//设备名用来查找。 int id; int usage; unsigned long rate; unsigned long ctrlbit; struct clk_ops *ops; int (*enable)(struct clk *, int enable);//指向模块时钟使能/禁止时钟的函数 struct clk_lookup lookup;#if defined(CONFIG_PM_DEBUG) defined(CONFIG_DEBUG_FS) struct dentry *dent; /* For visible tree hierarchy */#endif};一个已经移植好可以运行的内核它的外设时钟都已经在系统初期已经完成注册实现文件就在Clock-exynos4.c arch\arm\Mach-exynos关于 LCD 控制器fimd0模块的时钟定义把 exynos4_clk_fimd0 结构放入数组中:void __init exynos4_register_clocks(void){ int ptr; s3c24xx_register_clocks(exynos4_clks, ARRAY_SIZE(exynos4_clks)); for (ptr 0; ptr ARRAY_SIZE(exynos4_sysclks); ptr) s3c_register_clksrc(exynos4_sysclks[ptr], 1); for (ptr 0; ptr ARRAY_SIZE(exynos4_sclk_tv); ptr) s3c_register_clksrc(exynos4_sclk_tv[ptr], 1); for (ptr 0; ptr ARRAY_SIZE(exynos4_clksrc_cdev); ptr) s3c_register_clksrc(exynos4_clksrc_cdev[ptr], 1);//注册时钟源其中 sclk_fimd0 就是在这里注册的 ,在 exynos4_clksrcs 数组中定义 s3c_register_clksrc(exynos4_clksrcs, ARRAY_SIZE(exynos4_clksrcs));//默认打开时钟的模块 s3c_register_clocks(exynos4_init_clocks_on, ARRAY_SIZE(exynos4_init_clocks_on)); s3c_register_clocks(exynos4_init_audss_clocks, ARRAY_SIZE(exynos4_init_audss_clocks)); s3c_disable_clocks(exynos4_init_audss_clocks, ARRAY_SIZE(exynos4_init_audss_clocks)); s3c24xx_register_clocks(exynos4_gate_clocks, ARRAY_SIZE(exynos4_gate_clocks));//fyyy:注册设备时钟其中 LCD 时钟就在这里注册,可以通过 clk_get 获得 s3c24xx_register_clocks(exynos4_clk_cdev, ARRAY_SIZE(exynos4_clk_cdev));//fyyy:注册后禁止它为了降低功耗 for (ptr 0; ptr ARRAY_SIZE(exynos4_clk_cdev); ptr) s3c_disable_clocks(exynos4_clk_cdev[ptr], 1);//这里有禁止 lcd 相关的时钟 fimd0 s3c_register_clocks(exynos4_init_clocks_off, ARRAY_SIZE(exynos4_init_clocks_off)); //默认关闭时钟的模块 s3c_disable_clocks(exynos4_init_clocks_off, ARRAY_SIZE(exynos4_init_clocks_off)); //可以查找的时钟 ,可以通过 clk_get 获得 Clkdev_add_table(exynos4_clk_lookup, ARRAY_SIZE(exynos4_clk_lookup)); register_syscore_ops(exynos4_clock_syscore_ops); s3c24xx_register_clock(dummy_apb_pclk); s3c_pwmclk_init();}分析s3c24xx_register_clocks(exynos4_clk_cdev, ARRAY_SIZE(exynos4_clk_cdev));是注册了 fimd0 模块的时钟信息//fyyy:注册后禁止它为了降低功耗for (ptr 0; ptr ARRAY_SIZE(exynos4_clk_cdev); ptr) {s3c_disable_clocks(exynos4_clk_cdev[ptr], 1);//这里有禁止 lcd 相关的时钟 fimd0}要使用这个模块必须先开这个模块的时钟。clkdev_add_table(exynos4_clk_lookup, ARRAY_SIZE(exynos4_clk_lookup));这一行是把可以通过设备名查找到的 clk 结构加到可查询的链表上。内核 struct clk_lookup 结构来表示一个可以被查找到的时钟结构。Clkdev.h linux-3.5\include\Linux//它是用来查找 struct clk 结构的。//有了它就可以通过设备名或时钟源的名字来找到相应的 struct clk 结构。struct clk_lookup {struct list_head node;const char *dev_id; //设备名提供对外搜索的名字匹配使用的const char *con_id; //总线名也可以用来搜索匹配使用struct clk *clk; //指向模块时钟信息结构};实际的匹配过程是会比较 dev_id 和 con_id 两个成员的如果匹配上则返回 clk 结构。内核提供一个辅助填充宏CLKDEV_INIT定义如下#define CLKDEV_INIT(d, n, c) \{ \.dev_id d, \.con_id n, \.clk c, \}//可以被查找操作的模块时钟//它是用来查找 struct clk 结构的。//有了它就可以通过设备名或时钟源的名字来找到相应的 struct clk 结构。static struct clk_lookup exynos4_clk_lookup[] {……//通过设备名或时钟源名查找到 exynos4_clk_fimd0 结构CLKDEV_INIT(exynos4-fb.0, lcd, exynos4_clk_fimd0),……};struct device dev;struct clk * clk_bus;dev. init_name exynos4-fb.0;clk_bus clk_get(dev, lcd );如何找到模块的时钟结构内核提供了操作时钟相关的 API 函数这些 API 接口函数是通用的声明在 Clk.h linux-3.5\include\Linux 。时钟获得结构获取函数struct clk *clk_get(struct device *dev, const char *id);功能通过 dev. init_name 和参数 id 进行在 struct clk_lookup 注册到内核的时钟结构链表查找。参数 dev. init_name 和 clk_lookup 结构中的 dev_id 成员比较 参数 id 和 clk_lookup 结构中的 con_id 比较 如果两个成员都相同就返回 clk_lookup 结构中的中 clk 指针。返回值IS_ERR(clk_get 返回值) 非 0: 获得失败这时候应该返回 –ENODEV 错误码 IS_ERR(clk_get 返回值) 0: 获得时钟成功示例s3c_ac97.ac97_clk clk_get(pdev-dev, ac97);if (IS_ERR(s3c_ac97.ac97_clk)) {dev_err(pdev-dev, ac97 failed to get ac97_clock\n);ret -ENODEV;goto err2;}clk_enable(s3c_ac97.ac97_clk); //获得成功后可以使能模块时钟了时钟使能函数int clk_enable(struct clk *clk);功能 在获得 clk 结构后就可以调用 clk_enable 函数来使能模块的时钟返回 0成员负数失败 时钟禁止函数void clk_disable(struct clk *clk);功能当不需要使用一个模块时候要降低功耗可以关闭它。获得模块的运行时钟频率unsigned long clk_get_rate(struct clk *clk);功能 根据结构获得模块的运行频率 返回模块的运行频率单位是 HZ 减少时钟引用计数如果你使用void clk_put(struct clk *clk);当使用了 clk_get clk_enable 后如果不想使用模块了则需要 clk_put 引用计数。设置模块的运行时钟int clk_set_rate(struct clk *clk, unsigned long rate);参数 rate 要设置的目标运行频率 返回 0成员负数失败—————END—————扫码或长按关注回复「 加群 」进入技术群聊
http://www.zqtcl.cn/news/41260/

相关文章:

  • 怎么搜索到自己网站广东建筑人才招聘资讯
  • 建设网站找谁成都代运营公司
  • 外包网站现在开网站做微商赚钱吗
  • 小网站推荐大企业网站制作及维护
  • 影视网站建设策划文案什么网站建设最便宜
  • 官方网站是什么意思深圳网站备案时间
  • 视频网站如何建设东莞网站推广建设
  • 临汾外贸网站建设价格免费建网站软件下载
  • 网站开发背景 目的烟台网站的建设
  • 在百度上如何上传自己的网站如何修改wordpress站
  • 两学一做 网站网站建设公司联系方式
  • 音乐外链网站网页美工怎么做
  • 做app挣钱还是网站营销型网站建设服务
  • 一台电脑如何做网站wordpress微拍源码
  • 网站建设的方法有大理网站建设网站建设
  • 淄博微网站建设天津微信网站
  • 门诊部网站建设wordpress快速插图
  • 网站dns多久刷新广州建站招聘
  • 专业做网站有哪些中国纪检监察报谁题的报名
  • 网站建设项目运作的可行性网站源码大全免费
  • 旅游网站开发的作用做网站备案不少天
  • 玉器珠宝做网站商业空间设计的特点
  • 如何在虚拟机中建设网站wordpress 后台被锁定
  • 徐州html5响应式网站建设桂林象鼻山免费吗
  • 如何实现网站建设服务南京公司网站建设平台
  • 代理网站平台省企联网站建设要求
  • 主页导航网站建设定制做网站运营工资是不是很低
  • 做网站需要学习多久外管局网站做延期收款报告
  • 建设网站带后台管理电脑培训学校在哪里
  • 做门户论坛与网站的区别网页前端开发需要学什么