{"id":73,"date":"2019-07-23T17:12:46","date_gmt":"2019-07-23T09:12:46","guid":{"rendered":"https:\/\/www.book11111.com\/?p=73"},"modified":"2019-07-27T22:05:18","modified_gmt":"2019-07-27T14:05:18","slug":"%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99","status":"publish","type":"post","link":"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/","title":{"rendered":"\u57fa\u4e8eSC2440\u7684LED\u9a71\u52a8\u53ca\u6d4b\u8bd5\u7a0b\u5e8f\u7f16\u5199"},"content":{"rendered":"<p>\u672c\u4eba\u4f7f\u7528\u5e73\u53f0\u5982\u4e0b\uff1a<\/p>\n<ol>\n<li>JZ2440\u5f00\u53d1\u677f<\/li>\n<li>\u81ea\u5236<a href=\"http:\/\/116.62.123.213\/blogs\/10212018-1516\">Crosstool\u4ea4\u53c9\u7f16\u8bd1\u5de5\u5177\u94fe<\/a><\/li>\n<li>busybox-1.20.2<\/li>\n<li>\u57fa\u4e8elinux-3.14.11\u00a0 \u5185\u6838<\/li>\n<\/ol>\n<p>\u672c\u4eba\u5b66\u4e60\u97e6\u4e1c\u5c71\u7684\u89c6\u9891\uff0c\u89c6\u9891\u4f7f\u7528\u7684\u662f\u57fa\u4e8elinux2.6\u7684\u5185\u6838\uff0c\u9a71\u52a8\u7a0b\u5e8f\u4e0a\u6709\u4e9b\u8bb8\u4e0d\u540c\uff0c\u4e0d\u540c\u4e4b\u5904\u5982\u4e0b\uff1a<\/p>\n<ol>\n<li>\u5c06#define DECLARE_MUTEX(name) \u6539\u6210\u4e86 #define DEFINE_SEMAPHORE(name)<\/li>\n<li>\u5c06s3c2410_gpio_setpin\u6539\u4e3agpio_set_value<\/li>\n<li>\u5c06class_device_create\u6539\u4e3adevice_create<\/li>\n<\/ol>\n<p>\u8fd9\u4e9b\u66f4\u6539\u5728linux\u5185\u6838\u6e90\u4ee3\u7801\u4e2d\u80fd\u591f\u627e\u5230<\/p>\n<p>\u6700\u540e\u8d34\u4e0a\u5b8c\u6574\u9a71\u52a8\u4ee3\u7801\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">#include &lt;linux\/module.h&gt;\n#include &lt;linux\/kernel.h&gt;\n#include &lt;linux\/fs.h&gt;\n#include &lt;linux\/init.h&gt;\n#include &lt;linux\/types.h&gt;\n#include &lt;linux\/device.h&gt;\n#include &lt;linux\/gpio.h&gt;\n\u00a0\n#include &lt;asm\/uaccess.h&gt;\n#include &lt;asm\/io.h&gt;\n\u00a0\n#include &lt;mach\/hardware.h&gt;\n#include &lt;mach\/regs-gpio.h&gt;\n#include &lt;mach\/regs-irq.h&gt;\n#include &lt;mach\/gpio-samsung.h&gt;\n\u00a0\n#include &lt;plat\/gpio-cfg.h&gt;\n\u00a0\n#define DEVICE_NAME \"testleds\"\n#define LED_MAJOR   250\n\u00a0\nstatic struct class *leds_class;\nstatic struct class_device *leds_class_devs[4];\n\u00a0\nstatic char leds_status = 0x0;\n\u00a0\n\/\/\u5c06#define DECLARE_MUTEX(name)   \u6539\u6210\u4e86 #define DEFINE_SEMAPHORE(name) \nstatic DEFINE_SEMAPHORE(leds_lock);\n\u00a0\nstatic unsigned long gpio_va;\n\u00a0\n#define GPIO_OFT(x) ((x) - 0x56000000)\n#define GPFCON  (*(volatile unsigned long *)(gpio_va + GPIO_OFT(0x56000050)))\n#define GPFDAT  (*(volatile unsigned long *)(gpio_va + GPIO_OFT(0x56000054)))\n\u00a0\nstatic int s3c2440_leds_open(struct inode *inode, struct file *file)\n{\n  int minor = MINOR(inode-&gt;i_rdev);\n\u00a0\n  switch(minor){\n    case 0:{\n      GPFCON &amp;= ~(0x3&lt;&lt;(4*2));\n      GPFCON |= (1&lt;&lt;(4*2));\n      GPFCON &amp;= ~(0x3&lt;&lt;(5*2));\n      GPFCON |= (1&lt;&lt;(5*2));\n      GPFCON &amp;= ~(0x3&lt;&lt;(6*2));\n      GPFCON |= (1&lt;&lt;(6*2));\n      GPFDAT &amp;= ~(1&lt;&lt;4);\n      GPFDAT &amp;= ~(1&lt;&lt;5);\n      GPFDAT &amp;= ~(1&lt;&lt;6);\n\u00a0\n      down(&amp;leds_lock);\n      leds_status = 0x0;\n      up(&amp;leds_lock);\n      break;\n    }\n    case 1:{\n      \/\/\u5c06s3c2410_gpio_setpin\u6539\u4e3agpio_set_value\n      s3c_gpio_cfgpin(S3C2410_GPF(4),S3C_GPIO_SFN(1) );\n      gpio_set_value(S3C2410_GPF(4), 0);\n\u00a0\n      down(&amp;leds_lock);\n      leds_status &amp;= ~(1&lt;&lt;0);\n            up(&amp;leds_lock);\n\u00a0\n            break;\n    }\n    case 2:{\n      s3c_gpio_cfgpin(S3C2410_GPF(5), S3C_GPIO_SFN(1));\n      gpio_set_value(S3C2410_GPF(5), 0);\n\u00a0\n      down(&amp;leds_lock);\n      leds_status &amp;= ~(1&lt;&lt;1);\n            up(&amp;leds_lock);\n\u00a0\n            break;\n    }\n    case 3:{\n      s3c_gpio_cfgpin(S3C2410_GPF(6), S3C_GPIO_SFN(1));\n      gpio_set_value(S3C2410_GPF(6), 0);\n\u00a0\n      down(&amp;leds_lock);\n      leds_status &amp;= ~(1&lt;&lt;2);\n            up(&amp;leds_lock);\n\u00a0\n            break;\n    }\n  }\n\u00a0\n  return 0;\n}\n\u00a0\n\u00a0\nstatic int s3c2440_leds_read(struct file *filp, char __user *buff, size_t count, loff_t *offp)\n{\n  int minor = MINOR(filp-&gt;f_dentry-&gt;d_inode-&gt;i_rdev);\n    char val;\n  switch (minor)\n    {\n      case 0: \/* \/dev\/leds *\/\n      {\n\u00a0\n        copy_to_user(buff, (const void *)&amp;leds_status, 1);\t\t\t\t\t  \n        break;\n      }\n\u00a0\n      case 1: \/* \/dev\/led1 *\/\n      {\n        down(&amp;leds_lock);\n        val = leds_status &amp; 0x1;\n        up(&amp;leds_lock);\n        copy_to_user(buff, (const void *)&amp;val, 1);\n        break;\n      }\n\u00a0\n      case 2: \/* \/dev\/led2 *\/\n      {\n        down(&amp;leds_lock);\n        val = (leds_status&gt;&gt;1) &amp; 0x1;\n        up(&amp;leds_lock);\n        copy_to_user(buff, (const void *)&amp;val, 1);\n        break;\n      }\n\u00a0\n      case 3: \/* \/dev\/led3 *\/\n      {\n        down(&amp;leds_lock);\n        val = (leds_status&gt;&gt;2) &amp; 0x1;\n        up(&amp;leds_lock);\n        copy_to_user(buff, (const void *)&amp;val, 1);\n        break;\n      }\n\u00a0\n    }\n\u00a0\n\u00a0\n  return 1;\n}\n\u00a0\nstatic ssize_t s3c2440_leds_write(struct file *file, const char __user *buf, ssize_t count, loff_t * ppos)\n{\n  int minor = MINOR(file-&gt;f_dentry-&gt;d_inode-&gt;i_rdev);\n    char val;\n\u00a0\n    copy_from_user(&amp;val, buf, 1);\n\u00a0\n    switch (minor)\n    {\n      case 0: \/* \/dev\/leds *\/\n      {\t\t\t \n        gpio_set_value(S3C2410_GPF(4), (val &amp; 0x1));\n        gpio_set_value(S3C2410_GPF(5), (val &amp; 0x1));\n        gpio_set_value(S3C2410_GPF(6), (val &amp; 0x1));\n        down(&amp;leds_lock);\n        leds_status = val;\n        up(&amp;leds_lock);\n        break;\n      }\n\u00a0\n      case 1: \/* \/dev\/led1 *\/\n      {\n        gpio_set_value(S3C2410_GPF(4), val);\n\u00a0\n        if (val == 0)\n        {\n          down(&amp;leds_lock);\n          leds_status &amp;= ~(1&lt;&lt;0);\n          up(&amp;leds_lock);\n        }\n        else\n        {\n          down(&amp;leds_lock);\n          leds_status |= (1&lt;&lt;0);\t\t\t\t  \n          up(&amp;leds_lock);\n        }\n        break;\n      }\n\u00a0\n      case 2: \/* \/dev\/led2 *\/\n      {\n        gpio_set_value(S3C2410_GPF(5), val);\n        if (val == 0)\n        {\n          down(&amp;leds_lock);\n          leds_status &amp;= ~(1&lt;&lt;1);\n          up(&amp;leds_lock);\n        }\n        else\n        {\n          down(&amp;leds_lock);\n          leds_status |= (1&lt;&lt;1);\t\t\t\t  \n          up(&amp;leds_lock);\n        }\n        break;\n      }\n\u00a0\n      case 3: \/* \/dev\/led3 *\/\n      {\n        gpio_set_value(S3C2410_GPF(6), val);\n        if (val == 0)\n        {\n          down(&amp;leds_lock);\n          leds_status &amp;= ~(1&lt;&lt;2);\n          up(&amp;leds_lock);\n        }\n        else\n        {\n          down(&amp;leds_lock);\n          leds_status |= (1&lt;&lt;2);\t\t\t\t  \n          up(&amp;leds_lock);\n        }\n        break;\n      }\n\u00a0\n    }\n\u00a0\n    return 1;\n\u00a0\n}\nstatic struct file_operations s3c2440_leds_fops = {\n  .owner\t=\tTHIS_MODULE,\n  .open\t=\ts3c2440_leds_open,\n  .read\t=\ts3c2440_leds_read,\n  .write\t=\ts3c2440_leds_write,\n};\n\u00a0\n\u00a0\nstatic int __init s3c2440_leds_init(void)\n{\n  int ret;\n  int minor = 0;\n\u00a0\n  gpio_va = ioremap(0x56000000, 0x100000);\n  if (!gpio_va) {\n    return -EIO;\n  }\n\u00a0\n  ret = register_chrdev(LED_MAJOR, DEVICE_NAME, &amp;s3c2440_leds_fops);\n\u00a0\n  if(ret &lt; 0){\n    printk(DEVICE_NAME \"can't register major number\\n\");\n    return ret;\n  }\n\u00a0\n  leds_class = class_create(THIS_MODULE,\"testleds\");\n  if(IS_ERR(leds_class))\n    return PTR_ERR(leds_class);\n\u00a0\n  leds_class_devs[0] = device_create(leds_class, NULL, MKDEV(LED_MAJOR, 0), NULL, \"testleds\");\n  for(minor = 1; minor &lt; 4; minor++){\n    leds_class_devs[minor] = device_create(leds_class, NULL, MKDEV(LED_MAJOR, minor), NULL, \"led%d\", minor);\n    if(unlikely(IS_ERR(leds_class_devs[minor])))\n      return PTR_ERR(leds_class_devs[minor]);\n  }\n\u00a0\n  printk(DEVICE_NAME \"initialized\\n\");\n  return 0;\n}\n\u00a0\n\u00a0\nstatic void __exit s3c2440_leds_exit(void)\n{\n  int minor;\n  \/* \u5378\u8f7d\u9a71\u52a8\u7a0b\u5e8f *\/\n  unregister_chrdev(LED_MAJOR, DEVICE_NAME);\n\u00a0\n  for(minor = 0; minor &lt; 4; minor++)\n  {\n    device_unregister(leds_class_devs[minor]);\n  }\n  class_destroy(leds_class);\n  iounmap(gpio_va);\n\u00a0\n}\nmodule_init(s3c2440_leds_init);\nmodule_exit(s3c2440_leds_exit);\n\u00a0\nMODULE_AUTHOR(\"shen chao\");\nMODULE_LICENSE(\"GPL\");<\/pre>\n<p>\u6d4b\u8bd5\u4ee3\u7801\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">#include &lt;sys\/types.h&gt;\n#include &lt;sys\/stat.h&gt;\n#include &lt;fcntl.h&gt;\n#include &lt;stdio.h&gt;\n\u00a0\n\/*\n  *  ledtest &lt;dev&gt; &lt;on|off&gt;\n  *\/\n\u00a0\nvoid print_usage(char *file)\n{\n    printf(\"Usage:\\n\");\n    printf(\"%s &lt;dev&gt; &lt;on|off&gt;\\n\",file);\n    printf(\"eg. \\n\");\n    printf(\"%s \/dev\/leds on\\n\", file);\n    printf(\"%s \/dev\/leds off\\n\", file);\n    printf(\"%s \/dev\/led1 on\\n\", file);\n    printf(\"%s \/dev\/led1 off\\n\", file);\n}\n\u00a0\nint main(int argc, char **argv)\n{\n    int fd;\n    char* filename;\n    char val;\n\u00a0\n    if (argc != 3)\n    {\n        print_usage(argv[0]);\n        return 0;\n    }\n\u00a0\n    filename = argv[1];\n\u00a0\n    fd = open(filename, O_RDWR);\n    if (fd &lt; 0)\n    {\n        printf(\"error, can't open %s\\n\", filename);\n        return 0;\n    }\n\u00a0\n    if (!strcmp(\"on\", argv[2]))\n    {\n        \/\/ \u4eae\u706f\n        val = 0;\n        write(fd, &amp;val, 1);\n    }\n    else if (!strcmp(\"off\", argv[2]))\n    {\n        \/\/ \u706d\u706f\n        val = 1;\n        write(fd, &amp;val, 1);\n    }\n    else\n    {\n        print_usage(argv[0]);\n        return 0;\n    }\n\u00a0\n\u00a0\n    return 0;\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u4eba\u4f7f\u7528\u5e73\u53f0\u5982\u4e0b\uff1a JZ2440\u5f00\u53d1\u677f \u81ea\u5236Crosstool\u4ea4\u53c9\u7f16\u8bd1\u5de5\u5177\u94fe busybox-1.20.2 \u57fa [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[],"class_list":["post-73","post","type-post","status-publish","format-standard","hentry","category-linux"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.1.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u57fa\u4e8eSC2440\u7684LED\u9a71\u52a8\u53ca\u6d4b\u8bd5\u7a0b\u5e8f\u7f16\u5199 - \u6c88\u8d85\u7684\u535a\u5ba2<\/title>\n<meta name=\"description\" content=\"arm,dsp,pcb,fpga,zynq,\u5e38\u7528\u8f6f\u4ef6altium designed,\u7b97\u6cd5\" \/>\n<link rel=\"canonical\" href=\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/\u57fa\u4e8esc2440\u7684led\u9a71\u52a8\u53ca\u6d4b\u8bd5\u7a0b\u5e8f\u7f16\u5199\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u57fa\u4e8eSC2440\u7684LED\u9a71\u52a8\u53ca\u6d4b\u8bd5\u7a0b\u5e8f\u7f16\u5199 - \u6c88\u8d85\u7684\u535a\u5ba2\" \/>\n<meta property=\"og:description\" content=\"arm,dsp,pcb,fpga,zynq,\u5e38\u7528\u8f6f\u4ef6altium designed,\u7b97\u6cd5\" \/>\n<meta property=\"og:url\" content=\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/\u57fa\u4e8esc2440\u7684led\u9a71\u52a8\u53ca\u6d4b\u8bd5\u7a0b\u5e8f\u7f16\u5199\/\" \/>\n<meta property=\"og:site_name\" content=\"\u6c88\u8d85\u7684\u535a\u5ba2\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-23T09:12:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-27T14:05:18+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\">\n\t<meta name=\"twitter:data1\" content=\"5 \u5206\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/116.62.123.213\/#website\",\"url\":\"http:\/\/116.62.123.213\/\",\"name\":\"\\u6c88\\u8d85\\u7684\\u535a\\u5ba2\",\"description\":\"arm,dsp,pcb,fpga,zynq,\\u5e38\\u7528\\u8f6f\\u4ef6altium designed,\\u7b97\\u6cd5\",\"publisher\":{\"@id\":\"http:\/\/116.62.123.213\/#\/schema\/person\/686c7e95d9da5350921994bb9575417c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/116.62.123.213\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/#webpage\",\"url\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/\",\"name\":\"\\u57fa\\u4e8eSC2440\\u7684LED\\u9a71\\u52a8\\u53ca\\u6d4b\\u8bd5\\u7a0b\\u5e8f\\u7f16\\u5199 - \\u6c88\\u8d85\\u7684\\u535a\\u5ba2\",\"isPartOf\":{\"@id\":\"http:\/\/116.62.123.213\/#website\"},\"datePublished\":\"2019-07-23T09:12:46+00:00\",\"dateModified\":\"2019-07-27T14:05:18+00:00\",\"description\":\"arm,dsp,pcb,fpga,zynq,\\u5e38\\u7528\\u8f6f\\u4ef6altium designed,\\u7b97\\u6cd5\",\"breadcrumb\":{\"@id\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/116.62.123.213\/\",\"url\":\"http:\/\/116.62.123.213\/\",\"name\":\"\\u9996\\u9875\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/\",\"url\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/\",\"name\":\"\\u57fa\\u4e8eSC2440\\u7684LED\\u9a71\\u52a8\\u53ca\\u6d4b\\u8bd5\\u7a0b\\u5e8f\\u7f16\\u5199\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/#webpage\"},\"author\":{\"@id\":\"http:\/\/116.62.123.213\/#\/schema\/person\/686c7e95d9da5350921994bb9575417c\"},\"headline\":\"\\u57fa\\u4e8eSC2440\\u7684LED\\u9a71\\u52a8\\u53ca\\u6d4b\\u8bd5\\u7a0b\\u5e8f\\u7f16\\u5199\",\"datePublished\":\"2019-07-23T09:12:46+00:00\",\"dateModified\":\"2019-07-27T14:05:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/#webpage\"},\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/116.62.123.213\/#\/schema\/person\/686c7e95d9da5350921994bb9575417c\"},\"articleSection\":\"\\u5d4c\\u5165\\u5f0flinux\",\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/116.62.123.213\/index.php\/2019\/07\/23\/%e5%9f%ba%e4%ba%8esc2440%e7%9a%84led%e9%a9%b1%e5%8a%a8%e5%8f%8a%e6%b5%8b%e8%af%95%e7%a8%8b%e5%ba%8f%e7%bc%96%e5%86%99\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/116.62.123.213\/#\/schema\/person\/686c7e95d9da5350921994bb9575417c\",\"name\":\"\\u6c88\\u8d85\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/116.62.123.213\/#personlogo\",\"inLanguage\":\"zh-Hans\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/40261dfac05f2d465bb2abf96c1c4e8ceaf45876aec9d52e6b86ef40372d06f0?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/40261dfac05f2d465bb2abf96c1c4e8ceaf45876aec9d52e6b86ef40372d06f0?s=96&d=identicon&r=g\",\"caption\":\"\\u6c88\\u8d85\"},\"logo\":{\"@id\":\"http:\/\/116.62.123.213\/#personlogo\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/posts\/73","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/comments?post=73"}],"version-history":[{"count":1,"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/posts\/73\/revisions"}],"predecessor-version":[{"id":74,"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/posts\/73\/revisions\/74"}],"wp:attachment":[{"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/media?parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/categories?post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/116.62.123.213\/index.php\/wp-json\/wp\/v2\/tags?post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}